diff --git a/packages/bridge-sdk/tsconfig.json b/packages/bridge-sdk/tsconfig.json index 3f83e73..7420e1f 100644 --- a/packages/bridge-sdk/tsconfig.json +++ b/packages/bridge-sdk/tsconfig.json @@ -16,7 +16,7 @@ "downlevelIteration": true, "noEmit": true, "jsx": "react", - "typeRoots": ["../../types"] + "typeRoots": ["types", "../../types", "../../node_modules/@types"] }, "include": ["src"] } diff --git a/packages/bridge/_colors.less b/packages/bridge/_colors.less index b40026c..ccef6e6 100644 --- a/packages/bridge/_colors.less +++ b/packages/bridge/_colors.less @@ -1,5 +1,8 @@ @surge-20: #00CC82; +@surge-30: #00B372; @tungsten-100: #06101a; +@tungsten-80: #2F506F; @tungsten-60: #547595; @tungsten-50: #0D1B28; @tungsten-40: #7BA4C7; +@tungsten-0: #193650; diff --git a/packages/bridge/contracts/Address.json b/packages/bridge/contracts/Address.json new file mode 100644 index 0000000..dad0604 --- /dev/null +++ b/packages/bridge/contracts/Address.json @@ -0,0 +1,8234 @@ +{ + "contractName": "Address", + "abi": [], + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]}},\"version\":1}", + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aeba45e552a4fad8095b8658473f76fdd0093be5a657405e442c7075508b502364736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aeba45e552a4fad8095b8658473f76fdd0093be5a657405e442c7075508b502364736f6c634300060c0033", + "immutableReferences": {}, + "sourceMap": "134:7684:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "134:7684:8:-:0;;;;;;;;", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.2 <0.8.0;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize, which returns 0 for contracts in\n // construction, since the code is only stored at the end of the\n // constructor execution.\n\n uint256 size;\n // solhint-disable-next-line no-inline-assembly\n assembly { size := extcodesize(account) }\n return size > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n (bool success, ) = recipient.call{ value: amount }(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain`call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call{ value: value }(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.staticcall(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n\n // solhint-disable-next-line no-inline-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n", + "sourcePath": "@openzeppelin/contracts/utils/Address.sol", + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "exportedSymbols": { + "Address": [3595] + }, + "id": 3596, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3301, + "literals": ["solidity", ">=", "0.6", ".2", "<", "0.8", ".0"], + "nodeType": "PragmaDirective", + "src": "33:31:8" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 3302, + "nodeType": "StructuredDocumentation", + "src": "66:67:8", + "text": " @dev Collection of functions related to the address type" + }, + "fullyImplemented": true, + "id": 3595, + "linearizedBaseContracts": [3595], + "name": "Address", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3318, + "nodeType": "Block", + "src": "792:347:8", + "statements": [ + { + "assignments": [3311], + "declarations": [ + { + "constant": false, + "id": 3311, + "mutability": "mutable", + "name": "size", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3318, + "src": "989:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "989:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3312, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "989:12:8" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "1076:32:8", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1078:28:8", + "value": { + "arguments": [ + { + "name": "account", + "nodeType": "YulIdentifier", + "src": "1098:7:8" + } + ], + "functionName": { + "name": "extcodesize", + "nodeType": "YulIdentifier", + "src": "1086:11:8" + }, + "nodeType": "YulFunctionCall", + "src": "1086:20:8" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1078:4:8" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 3305, + "isOffset": false, + "isSlot": false, + "src": "1098:7:8", + "valueSize": 1 + }, + { + "declaration": 3311, + "isOffset": false, + "isSlot": false, + "src": "1078:4:8", + "valueSize": 1 + } + ], + "id": 3313, + "nodeType": "InlineAssembly", + "src": "1067:41:8" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3314, + "name": "size", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3311, + "src": "1124:4:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1131:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1124:8:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3309, + "id": 3317, + "nodeType": "Return", + "src": "1117:15:8" + } + ] + }, + "documentation": { + "id": 3303, + "nodeType": "StructuredDocumentation", + "src": "156:565:8", + "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====" + }, + "id": 3319, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isContract", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3306, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3305, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3319, + "src": "746:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3304, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "746:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "745:17:8" + }, + "returnParameters": { + "id": 3309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3308, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3319, + "src": "786:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3307, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "786:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "785:6:8" + }, + "scope": 3595, + "src": "726:413:8", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3352, + "nodeType": "Block", + "src": "2127:320:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3330, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2153:4:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$3595", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$3595", + "typeString": "library Address" + } + ], + "id": 3329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2145:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3328, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2145:7:8", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2145:13:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2145:21:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 3333, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3324, + "src": "2170:6:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2145:31:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", + "id": 3335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2178:31:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", + "typeString": "literal_string \"Address: insufficient balance\"" + }, + "value": "Address: insufficient balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", + "typeString": "literal_string \"Address: insufficient balance\"" + } + ], + "id": 3327, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "2137:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2137:73:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3337, + "nodeType": "ExpressionStatement", + "src": "2137:73:8" + }, + { + "assignments": [3339, null], + "declarations": [ + { + "constant": false, + "id": 3339, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3352, + "src": "2299:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3338, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2299:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 3346, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "", + "id": 3344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2349:2:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 3340, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3322, + "src": "2317:9:8", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 3341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2317:14:8", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 3343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": ["value"], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "id": 3342, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3324, + "src": "2340:6:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "2317:31:8", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 3345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2317:35:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2298:54:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3348, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3339, + "src": "2370:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", + "id": 3349, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2379:60:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", + "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" + }, + "value": "Address: unable to send value, recipient may have reverted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", + "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" + } + ], + "id": 3347, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "2362:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2362:78:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3351, + "nodeType": "ExpressionStatement", + "src": "2362:78:8" + } + ] + }, + "documentation": { + "id": 3320, + "nodeType": "StructuredDocumentation", + "src": "1145:906:8", + "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]." + }, + "id": 3353, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sendValue", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3322, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3353, + "src": "2075:25:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 3321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2075:15:8", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3324, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3353, + "src": "2102:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3323, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2102:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2074:43:8" + }, + "returnParameters": { + "id": 3326, + "nodeType": "ParameterList", + "parameters": [], + "src": "2127:0:8" + }, + "scope": 3595, + "src": "2056:391:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3369, + "nodeType": "Block", + "src": "3277:82:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3364, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3356, + "src": "3305:6:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3365, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3358, + "src": "3313:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", + "id": 3366, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3319:32:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", + "typeString": "literal_string \"Address: low-level call failed\"" + }, + "value": "Address: low-level call failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", + "typeString": "literal_string \"Address: low-level call failed\"" + } + ], + "id": 3363, + "name": "functionCall", + "nodeType": "Identifier", + "overloadedDeclarations": [3370, 3390], + "referencedDeclaration": 3390, + "src": "3292:12:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,string memory) returns (bytes memory)" + } + }, + "id": 3367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3292:60:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3362, + "id": 3368, + "nodeType": "Return", + "src": "3285:67:8" + } + ] + }, + "documentation": { + "id": 3354, + "nodeType": "StructuredDocumentation", + "src": "2453:730:8", + "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain`call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._" + }, + "id": 3370, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3356, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3370, + "src": "3210:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3355, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3210:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3358, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3370, + "src": "3226:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3357, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3226:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3209:35:8" + }, + "returnParameters": { + "id": 3362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3361, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3370, + "src": "3263:12:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3360, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3263:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3262:14:8" + }, + "scope": 3595, + "src": "3188:171:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3389, + "nodeType": "Block", + "src": "3698:76:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3383, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3373, + "src": "3737:6:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3384, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3375, + "src": "3745:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 3385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3751:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 3386, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3377, + "src": "3754:12:8", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3382, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [3410, 3460], + "referencedDeclaration": 3460, + "src": "3715:21:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)" + } + }, + "id": 3387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3715:52:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3381, + "id": 3388, + "nodeType": "Return", + "src": "3708:59:8" + } + ] + }, + "documentation": { + "id": 3371, + "nodeType": "StructuredDocumentation", + "src": "3365:211:8", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._" + }, + "id": 3390, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3373, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3390, + "src": "3603:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3372, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3603:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3375, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3390, + "src": "3619:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3374, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3619:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3377, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3390, + "src": "3638:26:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3376, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3638:6:8", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3602:63:8" + }, + "returnParameters": { + "id": 3381, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3380, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3390, + "src": "3684:12:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3379, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3684:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3683:14:8" + }, + "scope": 3595, + "src": "3581:193:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3409, + "nodeType": "Block", + "src": "4249:111:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3403, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3393, + "src": "4288:6:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3404, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3395, + "src": "4296:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 3405, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3397, + "src": "4302:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", + "id": 3406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4309:43:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", + "typeString": "literal_string \"Address: low-level call with value failed\"" + }, + "value": "Address: low-level call with value failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", + "typeString": "literal_string \"Address: low-level call with value failed\"" + } + ], + "id": 3402, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [3410, 3460], + "referencedDeclaration": 3460, + "src": "4266:21:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)" + } + }, + "id": 3407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4266:87:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3401, + "id": 3408, + "nodeType": "Return", + "src": "4259:94:8" + } + ] + }, + "documentation": { + "id": 3391, + "nodeType": "StructuredDocumentation", + "src": "3780:351:8", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._" + }, + "id": 3410, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3393, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3410, + "src": "4167:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3392, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4167:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3395, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3410, + "src": "4183:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3394, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4183:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3397, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3410, + "src": "4202:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3396, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4202:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4166:50:8" + }, + "returnParameters": { + "id": 3401, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3400, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3410, + "src": "4235:12:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3399, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4235:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4234:14:8" + }, + "scope": 3595, + "src": "4136:224:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3459, + "nodeType": "Block", + "src": "4749:382:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3427, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4775:4:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$3595", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$3595", + "typeString": "library Address" + } + ], + "id": 3426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4767:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3425, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4767:7:8", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4767:13:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4767:21:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 3430, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3417, + "src": "4792:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4767:30:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", + "id": 3432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4799:40:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", + "typeString": "literal_string \"Address: insufficient balance for call\"" + }, + "value": "Address: insufficient balance for call" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", + "typeString": "literal_string \"Address: insufficient balance for call\"" + } + ], + "id": 3424, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4759:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4759:81:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3434, + "nodeType": "ExpressionStatement", + "src": "4759:81:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3437, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3413, + "src": "4869:6:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3436, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3319, + "src": "4858:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4858:18:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", + "id": 3439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4878:31:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", + "typeString": "literal_string \"Address: call to non-contract\"" + }, + "value": "Address: call to non-contract" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", + "typeString": "literal_string \"Address: call to non-contract\"" + } + ], + "id": 3435, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4850:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4850:60:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3441, + "nodeType": "ExpressionStatement", + "src": "4850:60:8" + }, + { + "assignments": [3443, 3445], + "declarations": [ + { + "constant": false, + "id": 3443, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3459, + "src": "4981:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3442, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4981:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3445, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3459, + "src": "4995:23:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3444, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4995:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3452, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3450, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "5050:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3446, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3413, + "src": "5022:6:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5022:11:8", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 3449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": ["value"], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "id": 3448, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3417, + "src": "5042:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "5022:27:8", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 3451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5022:33:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4980:75:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3454, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3443, + "src": "5090:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 3455, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3445, + "src": "5099:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 3456, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3419, + "src": "5111:12:8", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3453, + "name": "_verifyCallResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3594, + "src": "5072:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)" + } + }, + "id": 3457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5072:52:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3423, + "id": 3458, + "nodeType": "Return", + "src": "5065:59:8" + } + ] + }, + "documentation": { + "id": 3411, + "nodeType": "StructuredDocumentation", + "src": "4366:237:8", + "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._" + }, + "id": 3460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3420, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3413, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3460, + "src": "4639:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3412, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4639:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3415, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3460, + "src": "4655:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3414, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4655:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3417, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3460, + "src": "4674:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3416, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4674:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3419, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3460, + "src": "4689:26:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3418, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4689:6:8", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4638:78:8" + }, + "returnParameters": { + "id": 3423, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3422, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3460, + "src": "4735:12:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3421, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4735:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4734:14:8" + }, + "scope": 3595, + "src": "4608:523:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3476, + "nodeType": "Block", + "src": "5408:97:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3471, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3463, + "src": "5444:6:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3472, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3465, + "src": "5452:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", + "id": 3473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5458:39:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", + "typeString": "literal_string \"Address: low-level static call failed\"" + }, + "value": "Address: low-level static call failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", + "typeString": "literal_string \"Address: low-level static call failed\"" + } + ], + "id": 3470, + "name": "functionStaticCall", + "nodeType": "Identifier", + "overloadedDeclarations": [3477, 3512], + "referencedDeclaration": 3512, + "src": "5425:18:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)" + } + }, + "id": 3474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5425:73:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3469, + "id": 3475, + "nodeType": "Return", + "src": "5418:80:8" + } + ] + }, + "documentation": { + "id": 3461, + "nodeType": "StructuredDocumentation", + "src": "5137:166:8", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._" + }, + "id": 3477, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionStaticCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3463, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3477, + "src": "5336:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3462, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5336:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3465, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3477, + "src": "5352:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3464, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5352:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5335:35:8" + }, + "returnParameters": { + "id": 3469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3468, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3477, + "src": "5394:12:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3467, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5394:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5393:14:8" + }, + "scope": 3595, + "src": "5308:197:8", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3511, + "nodeType": "Block", + "src": "5817:288:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3491, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3480, + "src": "5846:6:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3490, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3319, + "src": "5835:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5835:18:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", + "id": 3493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5855:38:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", + "typeString": "literal_string \"Address: static call to non-contract\"" + }, + "value": "Address: static call to non-contract" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", + "typeString": "literal_string \"Address: static call to non-contract\"" + } + ], + "id": 3489, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "5827:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5827:67:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3495, + "nodeType": "ExpressionStatement", + "src": "5827:67:8" + }, + { + "assignments": [3497, 3499], + "declarations": [ + { + "constant": false, + "id": 3497, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3511, + "src": "5965:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3496, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5965:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3499, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3511, + "src": "5979:23:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3498, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5979:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3504, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3502, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3482, + "src": "6024:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3500, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3480, + "src": "6006:6:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "staticcall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6006:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 3503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6006:23:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5964:65:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3506, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3497, + "src": "6064:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 3507, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3499, + "src": "6073:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 3508, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3484, + "src": "6085:12:8", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3505, + "name": "_verifyCallResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3594, + "src": "6046:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)" + } + }, + "id": 3509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6046:52:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3488, + "id": 3510, + "nodeType": "Return", + "src": "6039:59:8" + } + ] + }, + "documentation": { + "id": 3478, + "nodeType": "StructuredDocumentation", + "src": "5511:173:8", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._" + }, + "id": 3512, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionStaticCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3485, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3480, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3512, + "src": "5717:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3479, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5717:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3482, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3512, + "src": "5733:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3481, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5733:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3484, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3512, + "src": "5752:26:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3483, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5752:6:8", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5716:63:8" + }, + "returnParameters": { + "id": 3488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3487, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3512, + "src": "5803:12:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3486, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5803:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5802:14:8" + }, + "scope": 3595, + "src": "5689:416:8", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3528, + "nodeType": "Block", + "src": "6381:101:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3523, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3515, + "src": "6419:6:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3524, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3517, + "src": "6427:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + "id": 3525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6433:41:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", + "typeString": "literal_string \"Address: low-level delegate call failed\"" + }, + "value": "Address: low-level delegate call failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", + "typeString": "literal_string \"Address: low-level delegate call failed\"" + } + ], + "id": 3522, + "name": "functionDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [3529, 3564], + "referencedDeclaration": 3564, + "src": "6398:20:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,string memory) returns (bytes memory)" + } + }, + "id": 3526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6398:77:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3521, + "id": 3527, + "nodeType": "Return", + "src": "6391:84:8" + } + ] + }, + "documentation": { + "id": 3513, + "nodeType": "StructuredDocumentation", + "src": "6111:168:8", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._" + }, + "id": 3529, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionDelegateCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3518, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3515, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3529, + "src": "6314:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3514, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6314:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3517, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3529, + "src": "6330:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3516, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6330:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6313:35:8" + }, + "returnParameters": { + "id": 3521, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3520, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3529, + "src": "6367:12:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3519, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6367:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6366:14:8" + }, + "scope": 3595, + "src": "6284:198:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3563, + "nodeType": "Block", + "src": "6793:292:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3543, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3532, + "src": "6822:6:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3542, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3319, + "src": "6811:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6811:18:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", + "id": 3545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6831:40:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520", + "typeString": "literal_string \"Address: delegate call to non-contract\"" + }, + "value": "Address: delegate call to non-contract" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520", + "typeString": "literal_string \"Address: delegate call to non-contract\"" + } + ], + "id": 3541, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "6803:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6803:69:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3547, + "nodeType": "ExpressionStatement", + "src": "6803:69:8" + }, + { + "assignments": [3549, 3551], + "declarations": [ + { + "constant": false, + "id": 3549, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3563, + "src": "6943:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3548, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6943:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3551, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3563, + "src": "6957:23:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3550, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6957:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3556, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3554, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3534, + "src": "7004:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3552, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3532, + "src": "6984:6:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "delegatecall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6984:19:8", + "typeDescriptions": { + "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) returns (bool,bytes memory)" + } + }, + "id": 3555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6984:25:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6942:67:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3558, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3549, + "src": "7044:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 3559, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3551, + "src": "7053:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 3560, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3536, + "src": "7065:12:8", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3557, + "name": "_verifyCallResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3594, + "src": "7026:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)" + } + }, + "id": 3561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7026:52:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3540, + "id": 3562, + "nodeType": "Return", + "src": "7019:59:8" + } + ] + }, + "documentation": { + "id": 3530, + "nodeType": "StructuredDocumentation", + "src": "6488:175:8", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._" + }, + "id": 3564, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionDelegateCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3532, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3564, + "src": "6698:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3531, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6698:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3534, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3564, + "src": "6714:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3533, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6714:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3536, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3564, + "src": "6733:26:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3535, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6733:6:8", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6697:63:8" + }, + "returnParameters": { + "id": 3540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3539, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3564, + "src": "6779:12:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3538, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6779:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6778:14:8" + }, + "scope": 3595, + "src": "6668:417:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3593, + "nodeType": "Block", + "src": "7220:596:8", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 3575, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3566, + "src": "7234:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3591, + "nodeType": "Block", + "src": "7291:519:8", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3579, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3568, + "src": "7375:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7375:17:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3581, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7395:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7375:21:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3589, + "nodeType": "Block", + "src": "7747:53:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3586, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3570, + "src": "7772:12:8", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3585, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [-19, -19], + "referencedDeclaration": -19, + "src": "7765:6:8", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 3587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7765:20:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3588, + "nodeType": "ExpressionStatement", + "src": "7765:20:8" + } + ] + }, + "id": 3590, + "nodeType": "IfStatement", + "src": "7371:429:8", + "trueBody": { + "id": 3584, + "nodeType": "Block", + "src": "7398:343:8", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "7582:145:8", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7604:40:8", + "value": { + "arguments": [ + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "7633:10:8" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7627:5:8" + }, + "nodeType": "YulFunctionCall", + "src": "7627:17:8" + }, + "variables": [ + { + "name": "returndata_size", + "nodeType": "YulTypedName", + "src": "7608:15:8", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7676:2:8", + "type": "", + "value": "32" + }, + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "7680:10:8" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7672:3:8" + }, + "nodeType": "YulFunctionCall", + "src": "7672:19:8" + }, + { + "name": "returndata_size", + "nodeType": "YulIdentifier", + "src": "7693:15:8" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7665:6:8" + }, + "nodeType": "YulFunctionCall", + "src": "7665:44:8" + }, + "nodeType": "YulExpressionStatement", + "src": "7665:44:8" + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 3568, + "isOffset": false, + "isSlot": false, + "src": "7633:10:8", + "valueSize": 1 + }, + { + "declaration": 3568, + "isOffset": false, + "isSlot": false, + "src": "7680:10:8", + "valueSize": 1 + } + ], + "id": 3583, + "nodeType": "InlineAssembly", + "src": "7573:154:8" + } + ] + } + } + ] + }, + "id": 3592, + "nodeType": "IfStatement", + "src": "7230:580:8", + "trueBody": { + "id": 3578, + "nodeType": "Block", + "src": "7243:42:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3576, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3568, + "src": "7264:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3574, + "id": 3577, + "nodeType": "Return", + "src": "7257:17:8" + } + ] + } + } + ] + }, + "documentation": null, + "id": 3594, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_verifyCallResult", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3571, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3566, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3594, + "src": "7118:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3565, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7118:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3568, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3594, + "src": "7132:23:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3567, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7132:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3570, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3594, + "src": "7157:26:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3569, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7157:6:8", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7117:67:8" + }, + "returnParameters": { + "id": 3574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3573, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3594, + "src": "7206:12:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3572, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7206:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7205:14:8" + }, + "scope": 3595, + "src": "7091:725:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 3596, + "src": "134:7684:8" + } + ], + "src": "33:7786:8" + }, + "legacyAST": { + "attributes": { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "exportedSymbols": { + "Address": [3595] + }, + "license": "MIT" + }, + "children": [ + { + "attributes": { + "literals": ["solidity", ">=", "0.6", ".2", "<", "0.8", ".0"] + }, + "id": 3301, + "name": "PragmaDirective", + "src": "33:31:8" + }, + { + "attributes": { + "abstract": false, + "baseContracts": [null], + "contractDependencies": [null], + "contractKind": "library", + "fullyImplemented": true, + "linearizedBaseContracts": [3595], + "name": "Address", + "scope": 3596 + }, + "children": [ + { + "attributes": { + "text": " @dev Collection of functions related to the address type" + }, + "id": 3302, + "name": "StructuredDocumentation", + "src": "66:67:8" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "isContract", + "overrides": null, + "scope": 3595, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====" + }, + "id": 3303, + "name": "StructuredDocumentation", + "src": "156:565:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "account", + "overrides": null, + "scope": 3319, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3304, + "name": "ElementaryTypeName", + "src": "746:7:8" + } + ], + "id": 3305, + "name": "VariableDeclaration", + "src": "746:15:8" + } + ], + "id": 3306, + "name": "ParameterList", + "src": "745:17:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3319, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 3307, + "name": "ElementaryTypeName", + "src": "786:4:8" + } + ], + "id": 3308, + "name": "VariableDeclaration", + "src": "786:4:8" + } + ], + "id": 3309, + "name": "ParameterList", + "src": "785:6:8" + }, + { + "children": [ + { + "attributes": { + "assignments": [3311], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "size", + "overrides": null, + "scope": 3318, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3310, + "name": "ElementaryTypeName", + "src": "989:7:8" + } + ], + "id": 3311, + "name": "VariableDeclaration", + "src": "989:12:8" + } + ], + "id": 3312, + "name": "VariableDeclarationStatement", + "src": "989:12:8" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 3305, + "isOffset": false, + "isSlot": false, + "src": "1098:7:8", + "valueSize": 1 + }, + { + "declaration": 3311, + "isOffset": false, + "isSlot": false, + "src": "1078:4:8", + "valueSize": 1 + } + ], + "operations": "{ size := extcodesize(account) }" + }, + "children": [], + "id": 3313, + "name": "InlineAssembly", + "src": "1067:41:8" + }, + { + "attributes": { + "functionReturnParameters": 3309 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3311, + "type": "uint256", + "value": "size" + }, + "id": 3314, + "name": "Identifier", + "src": "1124:4:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 3315, + "name": "Literal", + "src": "1131:1:8" + } + ], + "id": 3316, + "name": "BinaryOperation", + "src": "1124:8:8" + } + ], + "id": 3317, + "name": "Return", + "src": "1117:15:8" + } + ], + "id": 3318, + "name": "Block", + "src": "792:347:8" + } + ], + "id": 3319, + "name": "FunctionDefinition", + "src": "726:413:8" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "sendValue", + "overrides": null, + "scope": 3595, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]." + }, + "id": 3320, + "name": "StructuredDocumentation", + "src": "1145:906:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 3353, + "stateVariable": false, + "storageLocation": "default", + "type": "address payable", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "payable", + "type": "address payable" + }, + "id": 3321, + "name": "ElementaryTypeName", + "src": "2075:15:8" + } + ], + "id": 3322, + "name": "VariableDeclaration", + "src": "2075:25:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 3353, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3323, + "name": "ElementaryTypeName", + "src": "2102:7:8" + } + ], + "id": 3324, + "name": "VariableDeclaration", + "src": "2102:14:8" + } + ], + "id": 3325, + "name": "ParameterList", + "src": "2074:43:8" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3326, + "name": "ParameterList", + "src": "2127:0:8" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", + "typeString": "literal_string \"Address: insufficient balance\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 3327, + "name": "Identifier", + "src": "2137:7:8" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "balance", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$3595", + "typeString": "library Address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 3328, + "name": "ElementaryTypeName", + "src": "2145:7:8" + } + ], + "id": 3329, + "name": "ElementaryTypeNameExpression", + "src": "2145:7:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -28, + "type": "library Address", + "value": "this" + }, + "id": 3330, + "name": "Identifier", + "src": "2153:4:8" + } + ], + "id": 3331, + "name": "FunctionCall", + "src": "2145:13:8" + } + ], + "id": 3332, + "name": "MemberAccess", + "src": "2145:21:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3324, + "type": "uint256", + "value": "amount" + }, + "id": 3333, + "name": "Identifier", + "src": "2170:6:8" + } + ], + "id": 3334, + "name": "BinaryOperation", + "src": "2145:31:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "416464726573733a20696e73756666696369656e742062616c616e6365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Address: insufficient balance\"", + "value": "Address: insufficient balance" + }, + "id": 3335, + "name": "Literal", + "src": "2178:31:8" + } + ], + "id": 3336, + "name": "FunctionCall", + "src": "2137:73:8" + } + ], + "id": 3337, + "name": "ExpressionStatement", + "src": "2137:73:8" + }, + { + "attributes": { + "assignments": [3339, null] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "success", + "overrides": null, + "scope": 3352, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 3338, + "name": "ElementaryTypeName", + "src": "2299:4:8" + } + ], + "id": 3339, + "name": "VariableDeclaration", + "src": "2299:12:8" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple(bool,bytes memory)", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": ["value"], + "type": "function (bytes memory) payable returns (bool,bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "call", + "referencedDeclaration": null, + "type": "function (bytes memory) payable returns (bool,bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3322, + "type": "address payable", + "value": "recipient" + }, + "id": 3340, + "name": "Identifier", + "src": "2317:9:8" + } + ], + "id": 3341, + "name": "MemberAccess", + "src": "2317:14:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3324, + "type": "uint256", + "value": "amount" + }, + "id": 3342, + "name": "Identifier", + "src": "2340:6:8" + } + ], + "id": 3343, + "name": "FunctionCallOptions", + "src": "2317:31:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"\"", + "value": "" + }, + "id": 3344, + "name": "Literal", + "src": "2349:2:8" + } + ], + "id": 3345, + "name": "FunctionCall", + "src": "2317:35:8" + } + ], + "id": 3346, + "name": "VariableDeclarationStatement", + "src": "2298:54:8" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", + "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 3347, + "name": "Identifier", + "src": "2362:7:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3339, + "type": "bool", + "value": "success" + }, + "id": 3348, + "name": "Identifier", + "src": "2370:7:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Address: unable to send value, recipient may have reverted\"", + "value": "Address: unable to send value, recipient may have reverted" + }, + "id": 3349, + "name": "Literal", + "src": "2379:60:8" + } + ], + "id": 3350, + "name": "FunctionCall", + "src": "2362:78:8" + } + ], + "id": 3351, + "name": "ExpressionStatement", + "src": "2362:78:8" + } + ], + "id": 3352, + "name": "Block", + "src": "2127:320:8" + } + ], + "id": 3353, + "name": "FunctionDefinition", + "src": "2056:391:8" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "functionCall", + "overrides": null, + "scope": 3595, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain`call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._" + }, + "id": 3354, + "name": "StructuredDocumentation", + "src": "2453:730:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target", + "overrides": null, + "scope": 3370, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3355, + "name": "ElementaryTypeName", + "src": "3210:7:8" + } + ], + "id": 3356, + "name": "VariableDeclaration", + "src": "3210:14:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 3370, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3357, + "name": "ElementaryTypeName", + "src": "3226:5:8" + } + ], + "id": 3358, + "name": "VariableDeclaration", + "src": "3226:17:8" + } + ], + "id": 3359, + "name": "ParameterList", + "src": "3209:35:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3370, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3360, + "name": "ElementaryTypeName", + "src": "3263:5:8" + } + ], + "id": 3361, + "name": "VariableDeclaration", + "src": "3263:12:8" + } + ], + "id": 3362, + "name": "ParameterList", + "src": "3262:14:8" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 3362 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", + "typeString": "literal_string \"Address: low-level call failed\"" + } + ], + "overloadedDeclarations": [3370, 3390], + "referencedDeclaration": 3390, + "type": "function (address,bytes memory,string memory) returns (bytes memory)", + "value": "functionCall" + }, + "id": 3363, + "name": "Identifier", + "src": "3292:12:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3356, + "type": "address", + "value": "target" + }, + "id": 3364, + "name": "Identifier", + "src": "3305:6:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3358, + "type": "bytes memory", + "value": "data" + }, + "id": 3365, + "name": "Identifier", + "src": "3313:4:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Address: low-level call failed\"", + "value": "Address: low-level call failed" + }, + "id": 3366, + "name": "Literal", + "src": "3319:32:8" + } + ], + "id": 3367, + "name": "FunctionCall", + "src": "3292:60:8" + } + ], + "id": 3368, + "name": "Return", + "src": "3285:67:8" + } + ], + "id": 3369, + "name": "Block", + "src": "3277:82:8" + } + ], + "id": 3370, + "name": "FunctionDefinition", + "src": "3188:171:8" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "functionCall", + "overrides": null, + "scope": 3595, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._" + }, + "id": 3371, + "name": "StructuredDocumentation", + "src": "3365:211:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target", + "overrides": null, + "scope": 3390, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3372, + "name": "ElementaryTypeName", + "src": "3603:7:8" + } + ], + "id": 3373, + "name": "VariableDeclaration", + "src": "3603:14:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 3390, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3374, + "name": "ElementaryTypeName", + "src": "3619:5:8" + } + ], + "id": 3375, + "name": "VariableDeclaration", + "src": "3619:17:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "errorMessage", + "overrides": null, + "scope": 3390, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 3376, + "name": "ElementaryTypeName", + "src": "3638:6:8" + } + ], + "id": 3377, + "name": "VariableDeclaration", + "src": "3638:26:8" + } + ], + "id": 3378, + "name": "ParameterList", + "src": "3602:63:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3390, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3379, + "name": "ElementaryTypeName", + "src": "3684:5:8" + } + ], + "id": 3380, + "name": "VariableDeclaration", + "src": "3684:12:8" + } + ], + "id": 3381, + "name": "ParameterList", + "src": "3683:14:8" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 3381 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "overloadedDeclarations": [3410, 3460], + "referencedDeclaration": 3460, + "type": "function (address,bytes memory,uint256,string memory) returns (bytes memory)", + "value": "functionCallWithValue" + }, + "id": 3382, + "name": "Identifier", + "src": "3715:21:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3373, + "type": "address", + "value": "target" + }, + "id": 3383, + "name": "Identifier", + "src": "3737:6:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3375, + "type": "bytes memory", + "value": "data" + }, + "id": 3384, + "name": "Identifier", + "src": "3745:4:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 3385, + "name": "Literal", + "src": "3751:1:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3377, + "type": "string memory", + "value": "errorMessage" + }, + "id": 3386, + "name": "Identifier", + "src": "3754:12:8" + } + ], + "id": 3387, + "name": "FunctionCall", + "src": "3715:52:8" + } + ], + "id": 3388, + "name": "Return", + "src": "3708:59:8" + } + ], + "id": 3389, + "name": "Block", + "src": "3698:76:8" + } + ], + "id": 3390, + "name": "FunctionDefinition", + "src": "3581:193:8" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "functionCallWithValue", + "overrides": null, + "scope": 3595, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._" + }, + "id": 3391, + "name": "StructuredDocumentation", + "src": "3780:351:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target", + "overrides": null, + "scope": 3410, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3392, + "name": "ElementaryTypeName", + "src": "4167:7:8" + } + ], + "id": 3393, + "name": "VariableDeclaration", + "src": "4167:14:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 3410, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3394, + "name": "ElementaryTypeName", + "src": "4183:5:8" + } + ], + "id": 3395, + "name": "VariableDeclaration", + "src": "4183:17:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "value", + "overrides": null, + "scope": 3410, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3396, + "name": "ElementaryTypeName", + "src": "4202:7:8" + } + ], + "id": 3397, + "name": "VariableDeclaration", + "src": "4202:13:8" + } + ], + "id": 3398, + "name": "ParameterList", + "src": "4166:50:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3410, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3399, + "name": "ElementaryTypeName", + "src": "4235:5:8" + } + ], + "id": 3400, + "name": "VariableDeclaration", + "src": "4235:12:8" + } + ], + "id": 3401, + "name": "ParameterList", + "src": "4234:14:8" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 3401 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", + "typeString": "literal_string \"Address: low-level call with value failed\"" + } + ], + "overloadedDeclarations": [3410, 3460], + "referencedDeclaration": 3460, + "type": "function (address,bytes memory,uint256,string memory) returns (bytes memory)", + "value": "functionCallWithValue" + }, + "id": 3402, + "name": "Identifier", + "src": "4266:21:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3393, + "type": "address", + "value": "target" + }, + "id": 3403, + "name": "Identifier", + "src": "4288:6:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3395, + "type": "bytes memory", + "value": "data" + }, + "id": 3404, + "name": "Identifier", + "src": "4296:4:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3397, + "type": "uint256", + "value": "value" + }, + "id": 3405, + "name": "Identifier", + "src": "4302:5:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Address: low-level call with value failed\"", + "value": "Address: low-level call with value failed" + }, + "id": 3406, + "name": "Literal", + "src": "4309:43:8" + } + ], + "id": 3407, + "name": "FunctionCall", + "src": "4266:87:8" + } + ], + "id": 3408, + "name": "Return", + "src": "4259:94:8" + } + ], + "id": 3409, + "name": "Block", + "src": "4249:111:8" + } + ], + "id": 3410, + "name": "FunctionDefinition", + "src": "4136:224:8" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "functionCallWithValue", + "overrides": null, + "scope": 3595, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._" + }, + "id": 3411, + "name": "StructuredDocumentation", + "src": "4366:237:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target", + "overrides": null, + "scope": 3460, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3412, + "name": "ElementaryTypeName", + "src": "4639:7:8" + } + ], + "id": 3413, + "name": "VariableDeclaration", + "src": "4639:14:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 3460, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3414, + "name": "ElementaryTypeName", + "src": "4655:5:8" + } + ], + "id": 3415, + "name": "VariableDeclaration", + "src": "4655:17:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "value", + "overrides": null, + "scope": 3460, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3416, + "name": "ElementaryTypeName", + "src": "4674:7:8" + } + ], + "id": 3417, + "name": "VariableDeclaration", + "src": "4674:13:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "errorMessage", + "overrides": null, + "scope": 3460, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 3418, + "name": "ElementaryTypeName", + "src": "4689:6:8" + } + ], + "id": 3419, + "name": "VariableDeclaration", + "src": "4689:26:8" + } + ], + "id": 3420, + "name": "ParameterList", + "src": "4638:78:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3460, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3421, + "name": "ElementaryTypeName", + "src": "4735:5:8" + } + ], + "id": 3422, + "name": "VariableDeclaration", + "src": "4735:12:8" + } + ], + "id": 3423, + "name": "ParameterList", + "src": "4734:14:8" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", + "typeString": "literal_string \"Address: insufficient balance for call\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 3424, + "name": "Identifier", + "src": "4759:7:8" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "balance", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$3595", + "typeString": "library Address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 3425, + "name": "ElementaryTypeName", + "src": "4767:7:8" + } + ], + "id": 3426, + "name": "ElementaryTypeNameExpression", + "src": "4767:7:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -28, + "type": "library Address", + "value": "this" + }, + "id": 3427, + "name": "Identifier", + "src": "4775:4:8" + } + ], + "id": 3428, + "name": "FunctionCall", + "src": "4767:13:8" + } + ], + "id": 3429, + "name": "MemberAccess", + "src": "4767:21:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3417, + "type": "uint256", + "value": "value" + }, + "id": 3430, + "name": "Identifier", + "src": "4792:5:8" + } + ], + "id": 3431, + "name": "BinaryOperation", + "src": "4767:30:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Address: insufficient balance for call\"", + "value": "Address: insufficient balance for call" + }, + "id": 3432, + "name": "Literal", + "src": "4799:40:8" + } + ], + "id": 3433, + "name": "FunctionCall", + "src": "4759:81:8" + } + ], + "id": 3434, + "name": "ExpressionStatement", + "src": "4759:81:8" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", + "typeString": "literal_string \"Address: call to non-contract\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 3435, + "name": "Identifier", + "src": "4850:7:8" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3319, + "type": "function (address) view returns (bool)", + "value": "isContract" + }, + "id": 3436, + "name": "Identifier", + "src": "4858:10:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3413, + "type": "address", + "value": "target" + }, + "id": 3437, + "name": "Identifier", + "src": "4869:6:8" + } + ], + "id": 3438, + "name": "FunctionCall", + "src": "4858:18:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Address: call to non-contract\"", + "value": "Address: call to non-contract" + }, + "id": 3439, + "name": "Literal", + "src": "4878:31:8" + } + ], + "id": 3440, + "name": "FunctionCall", + "src": "4850:60:8" + } + ], + "id": 3441, + "name": "ExpressionStatement", + "src": "4850:60:8" + }, + { + "attributes": { + "assignments": [3443, 3445] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "success", + "overrides": null, + "scope": 3459, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 3442, + "name": "ElementaryTypeName", + "src": "4981:4:8" + } + ], + "id": 3443, + "name": "VariableDeclaration", + "src": "4981:12:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "returndata", + "overrides": null, + "scope": 3459, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3444, + "name": "ElementaryTypeName", + "src": "4995:5:8" + } + ], + "id": 3445, + "name": "VariableDeclaration", + "src": "4995:23:8" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple(bool,bytes memory)", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": ["value"], + "type": "function (bytes memory) payable returns (bool,bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "call", + "referencedDeclaration": null, + "type": "function (bytes memory) payable returns (bool,bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3413, + "type": "address", + "value": "target" + }, + "id": 3446, + "name": "Identifier", + "src": "5022:6:8" + } + ], + "id": 3447, + "name": "MemberAccess", + "src": "5022:11:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3417, + "type": "uint256", + "value": "value" + }, + "id": 3448, + "name": "Identifier", + "src": "5042:5:8" + } + ], + "id": 3449, + "name": "FunctionCallOptions", + "src": "5022:27:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3415, + "type": "bytes memory", + "value": "data" + }, + "id": 3450, + "name": "Identifier", + "src": "5050:4:8" + } + ], + "id": 3451, + "name": "FunctionCall", + "src": "5022:33:8" + } + ], + "id": 3452, + "name": "VariableDeclarationStatement", + "src": "4980:75:8" + }, + { + "attributes": { + "functionReturnParameters": 3423 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3594, + "type": "function (bool,bytes memory,string memory) pure returns (bytes memory)", + "value": "_verifyCallResult" + }, + "id": 3453, + "name": "Identifier", + "src": "5072:17:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3443, + "type": "bool", + "value": "success" + }, + "id": 3454, + "name": "Identifier", + "src": "5090:7:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3445, + "type": "bytes memory", + "value": "returndata" + }, + "id": 3455, + "name": "Identifier", + "src": "5099:10:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3419, + "type": "string memory", + "value": "errorMessage" + }, + "id": 3456, + "name": "Identifier", + "src": "5111:12:8" + } + ], + "id": 3457, + "name": "FunctionCall", + "src": "5072:52:8" + } + ], + "id": 3458, + "name": "Return", + "src": "5065:59:8" + } + ], + "id": 3459, + "name": "Block", + "src": "4749:382:8" + } + ], + "id": 3460, + "name": "FunctionDefinition", + "src": "4608:523:8" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "functionStaticCall", + "overrides": null, + "scope": 3595, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._" + }, + "id": 3461, + "name": "StructuredDocumentation", + "src": "5137:166:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target", + "overrides": null, + "scope": 3477, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3462, + "name": "ElementaryTypeName", + "src": "5336:7:8" + } + ], + "id": 3463, + "name": "VariableDeclaration", + "src": "5336:14:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 3477, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3464, + "name": "ElementaryTypeName", + "src": "5352:5:8" + } + ], + "id": 3465, + "name": "VariableDeclaration", + "src": "5352:17:8" + } + ], + "id": 3466, + "name": "ParameterList", + "src": "5335:35:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3477, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3467, + "name": "ElementaryTypeName", + "src": "5394:5:8" + } + ], + "id": 3468, + "name": "VariableDeclaration", + "src": "5394:12:8" + } + ], + "id": 3469, + "name": "ParameterList", + "src": "5393:14:8" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 3469 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", + "typeString": "literal_string \"Address: low-level static call failed\"" + } + ], + "overloadedDeclarations": [3477, 3512], + "referencedDeclaration": 3512, + "type": "function (address,bytes memory,string memory) view returns (bytes memory)", + "value": "functionStaticCall" + }, + "id": 3470, + "name": "Identifier", + "src": "5425:18:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3463, + "type": "address", + "value": "target" + }, + "id": 3471, + "name": "Identifier", + "src": "5444:6:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3465, + "type": "bytes memory", + "value": "data" + }, + "id": 3472, + "name": "Identifier", + "src": "5452:4:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Address: low-level static call failed\"", + "value": "Address: low-level static call failed" + }, + "id": 3473, + "name": "Literal", + "src": "5458:39:8" + } + ], + "id": 3474, + "name": "FunctionCall", + "src": "5425:73:8" + } + ], + "id": 3475, + "name": "Return", + "src": "5418:80:8" + } + ], + "id": 3476, + "name": "Block", + "src": "5408:97:8" + } + ], + "id": 3477, + "name": "FunctionDefinition", + "src": "5308:197:8" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "functionStaticCall", + "overrides": null, + "scope": 3595, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._" + }, + "id": 3478, + "name": "StructuredDocumentation", + "src": "5511:173:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target", + "overrides": null, + "scope": 3512, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3479, + "name": "ElementaryTypeName", + "src": "5717:7:8" + } + ], + "id": 3480, + "name": "VariableDeclaration", + "src": "5717:14:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 3512, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3481, + "name": "ElementaryTypeName", + "src": "5733:5:8" + } + ], + "id": 3482, + "name": "VariableDeclaration", + "src": "5733:17:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "errorMessage", + "overrides": null, + "scope": 3512, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 3483, + "name": "ElementaryTypeName", + "src": "5752:6:8" + } + ], + "id": 3484, + "name": "VariableDeclaration", + "src": "5752:26:8" + } + ], + "id": 3485, + "name": "ParameterList", + "src": "5716:63:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3512, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3486, + "name": "ElementaryTypeName", + "src": "5803:5:8" + } + ], + "id": 3487, + "name": "VariableDeclaration", + "src": "5803:12:8" + } + ], + "id": 3488, + "name": "ParameterList", + "src": "5802:14:8" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", + "typeString": "literal_string \"Address: static call to non-contract\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 3489, + "name": "Identifier", + "src": "5827:7:8" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3319, + "type": "function (address) view returns (bool)", + "value": "isContract" + }, + "id": 3490, + "name": "Identifier", + "src": "5835:10:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3480, + "type": "address", + "value": "target" + }, + "id": 3491, + "name": "Identifier", + "src": "5846:6:8" + } + ], + "id": 3492, + "name": "FunctionCall", + "src": "5835:18:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Address: static call to non-contract\"", + "value": "Address: static call to non-contract" + }, + "id": 3493, + "name": "Literal", + "src": "5855:38:8" + } + ], + "id": 3494, + "name": "FunctionCall", + "src": "5827:67:8" + } + ], + "id": 3495, + "name": "ExpressionStatement", + "src": "5827:67:8" + }, + { + "attributes": { + "assignments": [3497, 3499] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "success", + "overrides": null, + "scope": 3511, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 3496, + "name": "ElementaryTypeName", + "src": "5965:4:8" + } + ], + "id": 3497, + "name": "VariableDeclaration", + "src": "5965:12:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "returndata", + "overrides": null, + "scope": 3511, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3498, + "name": "ElementaryTypeName", + "src": "5979:5:8" + } + ], + "id": 3499, + "name": "VariableDeclaration", + "src": "5979:23:8" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple(bool,bytes memory)", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "staticcall", + "referencedDeclaration": null, + "type": "function (bytes memory) view returns (bool,bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3480, + "type": "address", + "value": "target" + }, + "id": 3500, + "name": "Identifier", + "src": "6006:6:8" + } + ], + "id": 3501, + "name": "MemberAccess", + "src": "6006:17:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3482, + "type": "bytes memory", + "value": "data" + }, + "id": 3502, + "name": "Identifier", + "src": "6024:4:8" + } + ], + "id": 3503, + "name": "FunctionCall", + "src": "6006:23:8" + } + ], + "id": 3504, + "name": "VariableDeclarationStatement", + "src": "5964:65:8" + }, + { + "attributes": { + "functionReturnParameters": 3488 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3594, + "type": "function (bool,bytes memory,string memory) pure returns (bytes memory)", + "value": "_verifyCallResult" + }, + "id": 3505, + "name": "Identifier", + "src": "6046:17:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3497, + "type": "bool", + "value": "success" + }, + "id": 3506, + "name": "Identifier", + "src": "6064:7:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3499, + "type": "bytes memory", + "value": "returndata" + }, + "id": 3507, + "name": "Identifier", + "src": "6073:10:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3484, + "type": "string memory", + "value": "errorMessage" + }, + "id": 3508, + "name": "Identifier", + "src": "6085:12:8" + } + ], + "id": 3509, + "name": "FunctionCall", + "src": "6046:52:8" + } + ], + "id": 3510, + "name": "Return", + "src": "6039:59:8" + } + ], + "id": 3511, + "name": "Block", + "src": "5817:288:8" + } + ], + "id": 3512, + "name": "FunctionDefinition", + "src": "5689:416:8" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "functionDelegateCall", + "overrides": null, + "scope": 3595, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._" + }, + "id": 3513, + "name": "StructuredDocumentation", + "src": "6111:168:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target", + "overrides": null, + "scope": 3529, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3514, + "name": "ElementaryTypeName", + "src": "6314:7:8" + } + ], + "id": 3515, + "name": "VariableDeclaration", + "src": "6314:14:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 3529, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3516, + "name": "ElementaryTypeName", + "src": "6330:5:8" + } + ], + "id": 3517, + "name": "VariableDeclaration", + "src": "6330:17:8" + } + ], + "id": 3518, + "name": "ParameterList", + "src": "6313:35:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3529, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3519, + "name": "ElementaryTypeName", + "src": "6367:5:8" + } + ], + "id": 3520, + "name": "VariableDeclaration", + "src": "6367:12:8" + } + ], + "id": 3521, + "name": "ParameterList", + "src": "6366:14:8" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 3521 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", + "typeString": "literal_string \"Address: low-level delegate call failed\"" + } + ], + "overloadedDeclarations": [3529, 3564], + "referencedDeclaration": 3564, + "type": "function (address,bytes memory,string memory) returns (bytes memory)", + "value": "functionDelegateCall" + }, + "id": 3522, + "name": "Identifier", + "src": "6398:20:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3515, + "type": "address", + "value": "target" + }, + "id": 3523, + "name": "Identifier", + "src": "6419:6:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3517, + "type": "bytes memory", + "value": "data" + }, + "id": 3524, + "name": "Identifier", + "src": "6427:4:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Address: low-level delegate call failed\"", + "value": "Address: low-level delegate call failed" + }, + "id": 3525, + "name": "Literal", + "src": "6433:41:8" + } + ], + "id": 3526, + "name": "FunctionCall", + "src": "6398:77:8" + } + ], + "id": 3527, + "name": "Return", + "src": "6391:84:8" + } + ], + "id": 3528, + "name": "Block", + "src": "6381:101:8" + } + ], + "id": 3529, + "name": "FunctionDefinition", + "src": "6284:198:8" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "functionDelegateCall", + "overrides": null, + "scope": 3595, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._" + }, + "id": 3530, + "name": "StructuredDocumentation", + "src": "6488:175:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target", + "overrides": null, + "scope": 3564, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3531, + "name": "ElementaryTypeName", + "src": "6698:7:8" + } + ], + "id": 3532, + "name": "VariableDeclaration", + "src": "6698:14:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 3564, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3533, + "name": "ElementaryTypeName", + "src": "6714:5:8" + } + ], + "id": 3534, + "name": "VariableDeclaration", + "src": "6714:17:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "errorMessage", + "overrides": null, + "scope": 3564, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 3535, + "name": "ElementaryTypeName", + "src": "6733:6:8" + } + ], + "id": 3536, + "name": "VariableDeclaration", + "src": "6733:26:8" + } + ], + "id": 3537, + "name": "ParameterList", + "src": "6697:63:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3564, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3538, + "name": "ElementaryTypeName", + "src": "6779:5:8" + } + ], + "id": 3539, + "name": "VariableDeclaration", + "src": "6779:12:8" + } + ], + "id": 3540, + "name": "ParameterList", + "src": "6778:14:8" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520", + "typeString": "literal_string \"Address: delegate call to non-contract\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 3541, + "name": "Identifier", + "src": "6803:7:8" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3319, + "type": "function (address) view returns (bool)", + "value": "isContract" + }, + "id": 3542, + "name": "Identifier", + "src": "6811:10:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3532, + "type": "address", + "value": "target" + }, + "id": 3543, + "name": "Identifier", + "src": "6822:6:8" + } + ], + "id": 3544, + "name": "FunctionCall", + "src": "6811:18:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Address: delegate call to non-contract\"", + "value": "Address: delegate call to non-contract" + }, + "id": 3545, + "name": "Literal", + "src": "6831:40:8" + } + ], + "id": 3546, + "name": "FunctionCall", + "src": "6803:69:8" + } + ], + "id": 3547, + "name": "ExpressionStatement", + "src": "6803:69:8" + }, + { + "attributes": { + "assignments": [3549, 3551] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "success", + "overrides": null, + "scope": 3563, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 3548, + "name": "ElementaryTypeName", + "src": "6943:4:8" + } + ], + "id": 3549, + "name": "VariableDeclaration", + "src": "6943:12:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "returndata", + "overrides": null, + "scope": 3563, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3550, + "name": "ElementaryTypeName", + "src": "6957:5:8" + } + ], + "id": 3551, + "name": "VariableDeclaration", + "src": "6957:23:8" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple(bool,bytes memory)", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "delegatecall", + "referencedDeclaration": null, + "type": "function (bytes memory) returns (bool,bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3532, + "type": "address", + "value": "target" + }, + "id": 3552, + "name": "Identifier", + "src": "6984:6:8" + } + ], + "id": 3553, + "name": "MemberAccess", + "src": "6984:19:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3534, + "type": "bytes memory", + "value": "data" + }, + "id": 3554, + "name": "Identifier", + "src": "7004:4:8" + } + ], + "id": 3555, + "name": "FunctionCall", + "src": "6984:25:8" + } + ], + "id": 3556, + "name": "VariableDeclarationStatement", + "src": "6942:67:8" + }, + { + "attributes": { + "functionReturnParameters": 3540 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3594, + "type": "function (bool,bytes memory,string memory) pure returns (bytes memory)", + "value": "_verifyCallResult" + }, + "id": 3557, + "name": "Identifier", + "src": "7026:17:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3549, + "type": "bool", + "value": "success" + }, + "id": 3558, + "name": "Identifier", + "src": "7044:7:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3551, + "type": "bytes memory", + "value": "returndata" + }, + "id": 3559, + "name": "Identifier", + "src": "7053:10:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3536, + "type": "string memory", + "value": "errorMessage" + }, + "id": 3560, + "name": "Identifier", + "src": "7065:12:8" + } + ], + "id": 3561, + "name": "FunctionCall", + "src": "7026:52:8" + } + ], + "id": 3562, + "name": "Return", + "src": "7019:59:8" + } + ], + "id": 3563, + "name": "Block", + "src": "6793:292:8" + } + ], + "id": 3564, + "name": "FunctionDefinition", + "src": "6668:417:8" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_verifyCallResult", + "overrides": null, + "scope": 3595, + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "success", + "overrides": null, + "scope": 3594, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 3565, + "name": "ElementaryTypeName", + "src": "7118:4:8" + } + ], + "id": 3566, + "name": "VariableDeclaration", + "src": "7118:12:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "returndata", + "overrides": null, + "scope": 3594, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3567, + "name": "ElementaryTypeName", + "src": "7132:5:8" + } + ], + "id": 3568, + "name": "VariableDeclaration", + "src": "7132:23:8" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "errorMessage", + "overrides": null, + "scope": 3594, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 3569, + "name": "ElementaryTypeName", + "src": "7157:6:8" + } + ], + "id": 3570, + "name": "VariableDeclaration", + "src": "7157:26:8" + } + ], + "id": 3571, + "name": "ParameterList", + "src": "7117:67:8" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3594, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3572, + "name": "ElementaryTypeName", + "src": "7206:5:8" + } + ], + "id": 3573, + "name": "VariableDeclaration", + "src": "7206:12:8" + } + ], + "id": 3574, + "name": "ParameterList", + "src": "7205:14:8" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3566, + "type": "bool", + "value": "success" + }, + "id": 3575, + "name": "Identifier", + "src": "7234:7:8" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 3574 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3568, + "type": "bytes memory", + "value": "returndata" + }, + "id": 3576, + "name": "Identifier", + "src": "7264:10:8" + } + ], + "id": 3577, + "name": "Return", + "src": "7257:17:8" + } + ], + "id": 3578, + "name": "Block", + "src": "7243:42:8" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3568, + "type": "bytes memory", + "value": "returndata" + }, + "id": 3579, + "name": "Identifier", + "src": "7375:10:8" + } + ], + "id": 3580, + "name": "MemberAccess", + "src": "7375:17:8" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 3581, + "name": "Literal", + "src": "7395:1:8" + } + ], + "id": 3582, + "name": "BinaryOperation", + "src": "7375:21:8" + }, + { + "children": [ + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 3568, + "isOffset": false, + "isSlot": false, + "src": "7633:10:8", + "valueSize": 1 + }, + { + "declaration": 3568, + "isOffset": false, + "isSlot": false, + "src": "7680:10:8", + "valueSize": 1 + } + ], + "operations": "{\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n}" + }, + "children": [], + "id": 3583, + "name": "InlineAssembly", + "src": "7573:154:8" + } + ], + "id": 3584, + "name": "Block", + "src": "7398:343:8" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "type": "function (string memory) pure", + "value": "revert" + }, + "id": 3585, + "name": "Identifier", + "src": "7765:6:8" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3570, + "type": "string memory", + "value": "errorMessage" + }, + "id": 3586, + "name": "Identifier", + "src": "7772:12:8" + } + ], + "id": 3587, + "name": "FunctionCall", + "src": "7765:20:8" + } + ], + "id": 3588, + "name": "ExpressionStatement", + "src": "7765:20:8" + } + ], + "id": 3589, + "name": "Block", + "src": "7747:53:8" + } + ], + "id": 3590, + "name": "IfStatement", + "src": "7371:429:8" + } + ], + "id": 3591, + "name": "Block", + "src": "7291:519:8" + } + ], + "id": 3592, + "name": "IfStatement", + "src": "7230:580:8" + } + ], + "id": 3593, + "name": "Block", + "src": "7220:596:8" + } + ], + "id": 3594, + "name": "FunctionDefinition", + "src": "7091:725:8" + } + ], + "id": 3595, + "name": "ContractDefinition", + "src": "134:7684:8" + } + ], + "id": 3596, + "name": "SourceUnit", + "src": "33:7786:8" + }, + "compiler": { + "name": "solc", + "version": "0.6.12+commit.27d51765.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.3.4", + "updatedAt": "2021-04-12T21:53:29.926Z", + "devdoc": { + "details": "Collection of functions related to the address type", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} diff --git a/packages/bridge/contracts/BytesLib.json b/packages/bridge/contracts/BytesLib.json new file mode 100644 index 0000000..86195cf --- /dev/null +++ b/packages/bridge/contracts/BytesLib.json @@ -0,0 +1,15462 @@ +{ + "contractName": "BytesLib", + "abi": [], + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/BytesLib.sol\":\"BytesLib\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/BytesLib.sol\":{\"keccak256\":\"0x4a28e69afc4c1c1aee48c7b497f9b8452b295ddcf4bbf453d594a1467016d5f2\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://279e22c43f79567e9f7842cfca8ad2329bbbad2eac30413b620796d51f308719\",\"dweb:/ipfs/QmbdRLJYoKJxDbDLeverNMHsNFEcxnohAA713UFLjLm3Jy\"]}},\"version\":1}", + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202f26a001b561cb93cba0d1a744674075045e5c0fd05bfb9ab29ebd9824598c6c64736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202f26a001b561cb93cba0d1a744674075045e5c0fd05bfb9ab29ebd9824598c6c64736f6c634300060c0033", + "immutableReferences": {}, + "sourceMap": "370:17872:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "370:17872:0:-:0;;;;;;;;", + "source": "// SPDX-License-Identifier: Unlicense\n/*\n * @title Solidity Bytes Arrays Utils\n * @author Gonçalo Sá \n *\n * @dev Bytes tightly packed arrays utility library for ethereum contracts written in Solidity.\n * The library lets you concatenate, slice and type cast bytes arrays both in memory and storage.\n */\npragma solidity >=0.5.0 <0.7.0;\n\n\nlibrary BytesLib {\n function concat(\n bytes memory _preBytes,\n bytes memory _postBytes\n )\n internal\n pure\n returns (bytes memory)\n {\n bytes memory tempBytes;\n\n assembly {\n // Get a location of some free memory and store it in tempBytes as\n // Solidity does for memory variables.\n tempBytes := mload(0x40)\n\n // Store the length of the first bytes array at the beginning of\n // the memory for tempBytes.\n let length := mload(_preBytes)\n mstore(tempBytes, length)\n\n // Maintain a memory counter for the current write location in the\n // temp bytes array by adding the 32 bytes for the array length to\n // the starting location.\n let mc := add(tempBytes, 0x20)\n // Stop copying when the memory counter reaches the length of the\n // first bytes array.\n let end := add(mc, length)\n\n for {\n // Initialize a copy counter to the start of the _preBytes data,\n // 32 bytes into its memory.\n let cc := add(_preBytes, 0x20)\n } lt(mc, end) {\n // Increase both counters by 32 bytes each iteration.\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n } {\n // Write the _preBytes data into the tempBytes memory 32 bytes\n // at a time.\n mstore(mc, mload(cc))\n }\n\n // Add the length of _postBytes to the current length of tempBytes\n // and store it as the new length in the first 32 bytes of the\n // tempBytes memory.\n length := mload(_postBytes)\n mstore(tempBytes, add(length, mload(tempBytes)))\n\n // Move the memory counter back from a multiple of 0x20 to the\n // actual end of the _preBytes data.\n mc := end\n // Stop copying when the memory counter reaches the new combined\n // length of the arrays.\n end := add(mc, length)\n\n for {\n let cc := add(_postBytes, 0x20)\n } lt(mc, end) {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n } {\n mstore(mc, mload(cc))\n }\n\n // Update the free-memory pointer by padding our last write location\n // to 32 bytes: add 31 bytes to the end of tempBytes to move to the\n // next 32 byte block, then round down to the nearest multiple of\n // 32. If the sum of the length of the two arrays is zero then add\n // one before rounding down to leave a blank 32 bytes (the length block with 0).\n mstore(0x40, and(\n add(add(end, iszero(add(length, mload(_preBytes)))), 31),\n not(31) // Round down to the nearest 32 bytes.\n ))\n }\n\n return tempBytes;\n }\n\n function concatStorage(bytes storage _preBytes, bytes memory _postBytes) internal {\n assembly {\n // Read the first 32 bytes of _preBytes storage, which is the length\n // of the array. (We don't need to use the offset into the slot\n // because arrays use the entire slot.)\n let fslot := sload(_preBytes_slot)\n // Arrays of 31 bytes or less have an even value in their slot,\n // while longer arrays have an odd value. The actual length is\n // the slot divided by two for odd values, and the lowest order\n // byte divided by two for even values.\n // If the slot is even, bitwise and the slot with 255 and divide by\n // two to get the length. If the slot is odd, bitwise and the slot\n // with -1 and divide by two.\n let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2)\n let mlength := mload(_postBytes)\n let newlength := add(slength, mlength)\n // slength can contain both the length and contents of the array\n // if length < 32 bytes so let's prepare for that\n // v. http://solidity.readthedocs.io/en/latest/miscellaneous.html#layout-of-state-variables-in-storage\n switch add(lt(slength, 32), lt(newlength, 32))\n case 2 {\n // Since the new array still fits in the slot, we just need to\n // update the contents of the slot.\n // uint256(bytes_storage) = uint256(bytes_storage) + uint256(bytes_memory) + new_length\n sstore(\n _preBytes_slot,\n // all the modifications to the slot are inside this\n // next block\n add(\n // we can just add to the slot contents because the\n // bytes we want to change are the LSBs\n fslot,\n add(\n mul(\n div(\n // load the bytes from memory\n mload(add(_postBytes, 0x20)),\n // zero all bytes to the right\n exp(0x100, sub(32, mlength))\n ),\n // and now shift left the number of bytes to\n // leave space for the length in the slot\n exp(0x100, sub(32, newlength))\n ),\n // increase length by the double of the memory\n // bytes length\n mul(mlength, 2)\n )\n )\n )\n }\n case 1 {\n // The stored value fits in the slot, but the combined value\n // will exceed it.\n // get the keccak hash to get the contents of the array\n mstore(0x0, _preBytes_slot)\n let sc := add(keccak256(0x0, 0x20), div(slength, 32))\n\n // save new length\n sstore(_preBytes_slot, add(mul(newlength, 2), 1))\n\n // The contents of the _postBytes array start 32 bytes into\n // the structure. Our first read should obtain the `submod`\n // bytes that can fit into the unused space in the last word\n // of the stored array. To get this, we read 32 bytes starting\n // from `submod`, so the data we read overlaps with the array\n // contents by `submod` bytes. Masking the lowest-order\n // `submod` bytes allows us to add that value directly to the\n // stored value.\n\n let submod := sub(32, slength)\n let mc := add(_postBytes, submod)\n let end := add(_postBytes, mlength)\n let mask := sub(exp(0x100, submod), 1)\n\n sstore(\n sc,\n add(\n and(\n fslot,\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00\n ),\n and(mload(mc), mask)\n )\n )\n\n for {\n mc := add(mc, 0x20)\n sc := add(sc, 1)\n } lt(mc, end) {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n } {\n sstore(sc, mload(mc))\n }\n\n mask := exp(0x100, sub(mc, end))\n\n sstore(sc, mul(div(mload(mc), mask), mask))\n }\n default {\n // get the keccak hash to get the contents of the array\n mstore(0x0, _preBytes_slot)\n // Start copying to the last used word of the stored array.\n let sc := add(keccak256(0x0, 0x20), div(slength, 32))\n\n // save new length\n sstore(_preBytes_slot, add(mul(newlength, 2), 1))\n\n // Copy over the first `submod` bytes of the new data as in\n // case 1 above.\n let slengthmod := mod(slength, 32)\n let mlengthmod := mod(mlength, 32)\n let submod := sub(32, slengthmod)\n let mc := add(_postBytes, submod)\n let end := add(_postBytes, mlength)\n let mask := sub(exp(0x100, submod), 1)\n\n sstore(sc, add(sload(sc), and(mload(mc), mask)))\n\n for {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n } lt(mc, end) {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n } {\n sstore(sc, mload(mc))\n }\n\n mask := exp(0x100, sub(mc, end))\n\n sstore(sc, mul(div(mload(mc), mask), mask))\n }\n }\n }\n\n function slice(\n bytes memory _bytes,\n uint256 _start,\n uint256 _length\n )\n internal\n pure\n returns (bytes memory)\n {\n require(_bytes.length >= (_start + _length), \"Read out of bounds\");\n\n bytes memory tempBytes;\n\n assembly {\n switch iszero(_length)\n case 0 {\n // Get a location of some free memory and store it in tempBytes as\n // Solidity does for memory variables.\n tempBytes := mload(0x40)\n\n // The first word of the slice result is potentially a partial\n // word read from the original array. To read it, we calculate\n // the length of that partial word and start copying that many\n // bytes into the array. The first word we copy will start with\n // data we don't care about, but the last `lengthmod` bytes will\n // land at the beginning of the contents of the new array. When\n // we're done copying, we overwrite the full first word with\n // the actual length of the slice.\n let lengthmod := and(_length, 31)\n\n // The multiplication in the next line is necessary\n // because when slicing multiples of 32 bytes (lengthmod == 0)\n // the following copy loop was copying the origin's length\n // and then ending prematurely not copying everything it should.\n let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod)))\n let end := add(mc, _length)\n\n for {\n // The multiplication in the next line has the same exact purpose\n // as the one above.\n let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start)\n } lt(mc, end) {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n } {\n mstore(mc, mload(cc))\n }\n\n mstore(tempBytes, _length)\n\n //update free-memory pointer\n //allocating the array padded to 32 bytes like the compiler does now\n mstore(0x40, and(add(mc, 31), not(31)))\n }\n //if we want a zero-length slice let's just return a zero-length array\n default {\n tempBytes := mload(0x40)\n\n mstore(0x40, add(tempBytes, 0x20))\n }\n }\n\n return tempBytes;\n }\n\n function toAddress(bytes memory _bytes, uint256 _start) internal pure returns (address) {\n require(_bytes.length >= (_start + 20), \"Read out of bounds\");\n address tempAddress;\n\n assembly {\n tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000)\n }\n\n return tempAddress;\n }\n\n function toUint8(bytes memory _bytes, uint256 _start) internal pure returns (uint8) {\n require(_bytes.length >= (_start + 1), \"Read out of bounds\");\n uint8 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0x1), _start))\n }\n\n return tempUint;\n }\n\n function toUint16(bytes memory _bytes, uint256 _start) internal pure returns (uint16) {\n require(_bytes.length >= (_start + 2), \"Read out of bounds\");\n uint16 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0x2), _start))\n }\n\n return tempUint;\n }\n\n function toUint32(bytes memory _bytes, uint256 _start) internal pure returns (uint32) {\n require(_bytes.length >= (_start + 4), \"Read out of bounds\");\n uint32 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0x4), _start))\n }\n\n return tempUint;\n }\n\n function toUint64(bytes memory _bytes, uint256 _start) internal pure returns (uint64) {\n require(_bytes.length >= (_start + 8), \"Read out of bounds\");\n uint64 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0x8), _start))\n }\n\n return tempUint;\n }\n\n function toUint96(bytes memory _bytes, uint256 _start) internal pure returns (uint96) {\n require(_bytes.length >= (_start + 12), \"Read out of bounds\");\n uint96 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0xc), _start))\n }\n\n return tempUint;\n }\n\n function toUint128(bytes memory _bytes, uint256 _start) internal pure returns (uint128) {\n require(_bytes.length >= (_start + 16), \"Read out of bounds\");\n uint128 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0x10), _start))\n }\n\n return tempUint;\n }\n\n function toUint256(bytes memory _bytes, uint256 _start) internal pure returns (uint256) {\n require(_bytes.length >= (_start + 32), \"Read out of bounds\");\n uint256 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0x20), _start))\n }\n\n return tempUint;\n }\n\n function toBytes32(bytes memory _bytes, uint256 _start) internal pure returns (bytes32) {\n require(_bytes.length >= (_start + 32), \"Read out of bounds\");\n bytes32 tempBytes32;\n\n assembly {\n tempBytes32 := mload(add(add(_bytes, 0x20), _start))\n }\n\n return tempBytes32;\n }\n\n function equal(bytes memory _preBytes, bytes memory _postBytes) internal pure returns (bool) {\n bool success = true;\n\n assembly {\n let length := mload(_preBytes)\n\n // if lengths don't match the arrays are not equal\n switch eq(length, mload(_postBytes))\n case 1 {\n // cb is a circuit breaker in the for loop since there's\n // no said feature for inline assembly loops\n // cb = 1 - don't breaker\n // cb = 0 - break\n let cb := 1\n\n let mc := add(_preBytes, 0x20)\n let end := add(mc, length)\n\n for {\n let cc := add(_postBytes, 0x20)\n // the next line is the loop condition:\n // while(uint256(mc < end) + cb == 2)\n } eq(add(lt(mc, end), cb), 2) {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n } {\n // if any of these checks fails then arrays are not equal\n if iszero(eq(mload(mc), mload(cc))) {\n // unsuccess:\n success := 0\n cb := 0\n }\n }\n }\n default {\n // unsuccess:\n success := 0\n }\n }\n\n return success;\n }\n\n function equalStorage(\n bytes storage _preBytes,\n bytes memory _postBytes\n )\n internal\n view\n returns (bool)\n {\n bool success = true;\n\n assembly {\n // we know _preBytes_offset is 0\n let fslot := sload(_preBytes_slot)\n // Decode the length of the stored array like in concatStorage().\n let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2)\n let mlength := mload(_postBytes)\n\n // if lengths don't match the arrays are not equal\n switch eq(slength, mlength)\n case 1 {\n // slength can contain both the length and contents of the array\n // if length < 32 bytes so let's prepare for that\n // v. http://solidity.readthedocs.io/en/latest/miscellaneous.html#layout-of-state-variables-in-storage\n if iszero(iszero(slength)) {\n switch lt(slength, 32)\n case 1 {\n // blank the last byte which is the length\n fslot := mul(div(fslot, 0x100), 0x100)\n\n if iszero(eq(fslot, mload(add(_postBytes, 0x20)))) {\n // unsuccess:\n success := 0\n }\n }\n default {\n // cb is a circuit breaker in the for loop since there's\n // no said feature for inline assembly loops\n // cb = 1 - don't breaker\n // cb = 0 - break\n let cb := 1\n\n // get the keccak hash to get the contents of the array\n mstore(0x0, _preBytes_slot)\n let sc := keccak256(0x0, 0x20)\n\n let mc := add(_postBytes, 0x20)\n let end := add(mc, mlength)\n\n // the next line is the loop condition:\n // while(uint256(mc < end) + cb == 2)\n for {} eq(add(lt(mc, end), cb), 2) {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n } {\n if iszero(eq(sload(sc), mload(mc))) {\n // unsuccess:\n success := 0\n cb := 0\n }\n }\n }\n }\n }\n default {\n // unsuccess:\n success := 0\n }\n }\n\n return success;\n }\n}\n", + "sourcePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/BytesLib.sol", + "ast": { + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/BytesLib.sol", + "exportedSymbols": { + "BytesLib": [333] + }, + "id": 334, + "license": "Unlicense", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": ["solidity", ">=", "0.5", ".0", "<", "0.7", ".0"], + "nodeType": "PragmaDirective", + "src": "336:31:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 333, + "linearizedBaseContracts": [333], + "name": "BytesLib", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 16, + "nodeType": "Block", + "src": "533:2695:0", + "statements": [ + { + "assignments": [11], + "declarations": [ + { + "constant": false, + "id": 11, + "mutability": "mutable", + "name": "tempBytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 16, + "src": "543:22:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 10, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "543:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "543:22:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "585:2610:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "721:24:0", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "740:4:0", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "734:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "734:11:0" + }, + "variableNames": [ + { + "name": "tempBytes", + "nodeType": "YulIdentifier", + "src": "721:9:0" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "869:30:0", + "value": { + "arguments": [ + { + "name": "_preBytes", + "nodeType": "YulIdentifier", + "src": "889:9:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "883:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "883:16:0" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "873:6:0", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tempBytes", + "nodeType": "YulIdentifier", + "src": "919:9:0" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "930:6:0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "912:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "912:25:0" + }, + "nodeType": "YulExpressionStatement", + "src": "912:25:0" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1135:30:0", + "value": { + "arguments": [ + { + "name": "tempBytes", + "nodeType": "YulIdentifier", + "src": "1149:9:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1160:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1145:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "1145:20:0" + }, + "variables": [ + { + "name": "mc", + "nodeType": "YulTypedName", + "src": "1139:2:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1282:26:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "1297:2:0" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1301:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1293:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "1293:15:0" + }, + "variables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1286:3:0", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1673:154:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "1799:2:0" + }, + { + "arguments": [ + { + "name": "cc", + "nodeType": "YulIdentifier", + "src": "1809:2:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1803:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "1803:9:0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1792:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "1792:21:0" + }, + "nodeType": "YulExpressionStatement", + "src": "1792:21:0" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "1510:2:0" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "1514:3:0" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1507:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "1507:11:0" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "1519:153:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1603:19:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "1613:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1617:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1609:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "1609:13:0" + }, + "variableNames": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "1603:2:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1639:19:0", + "value": { + "arguments": [ + { + "name": "cc", + "nodeType": "YulIdentifier", + "src": "1649:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1653:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1645:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "1645:13:0" + }, + "variableNames": [ + { + "name": "cc", + "nodeType": "YulIdentifier", + "src": "1639:2:0" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "1326:180:0", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1462:30:0", + "value": { + "arguments": [ + { + "name": "_preBytes", + "nodeType": "YulIdentifier", + "src": "1476:9:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1487:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1472:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "1472:20:0" + }, + "variables": [ + { + "name": "cc", + "nodeType": "YulTypedName", + "src": "1466:2:0", + "type": "" + } + ] + } + ] + }, + "src": "1322:505:0" + }, + { + "nodeType": "YulAssignment", + "src": "2016:27:0", + "value": { + "arguments": [ + { + "name": "_postBytes", + "nodeType": "YulIdentifier", + "src": "2032:10:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2026:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "2026:17:0" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2016:6:0" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tempBytes", + "nodeType": "YulIdentifier", + "src": "2063:9:0" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2078:6:0" + }, + { + "arguments": [ + { + "name": "tempBytes", + "nodeType": "YulIdentifier", + "src": "2092:9:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2086:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "2086:16:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2074:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "2074:29:0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2056:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "2056:48:0" + }, + "nodeType": "YulExpressionStatement", + "src": "2056:48:0" + }, + { + "nodeType": "YulAssignment", + "src": "2234:9:0", + "value": { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2240:3:0" + }, + "variableNames": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "2234:2:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2362:22:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "2373:2:0" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2377:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2369:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "2369:15:0" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2362:3:0" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2566:53:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "2591:2:0" + }, + { + "arguments": [ + { + "name": "cc", + "nodeType": "YulIdentifier", + "src": "2601:2:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2595:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "2595:9:0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2584:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "2584:21:0" + }, + "nodeType": "YulExpressionStatement", + "src": "2584:21:0" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "2469:2:0" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2473:3:0" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2466:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "2466:11:0" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "2478:87:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2496:19:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "2506:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2510:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2502:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "2502:13:0" + }, + "variableNames": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "2496:2:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2532:19:0", + "value": { + "arguments": [ + { + "name": "cc", + "nodeType": "YulIdentifier", + "src": "2542:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2546:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2538:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "2538:13:0" + }, + "variableNames": [ + { + "name": "cc", + "nodeType": "YulIdentifier", + "src": "2532:2:0" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "2402:63:0", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2420:31:0", + "value": { + "arguments": [ + { + "name": "_postBytes", + "nodeType": "YulIdentifier", + "src": "2434:10:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2446:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2430:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "2430:21:0" + }, + "variables": [ + { + "name": "cc", + "nodeType": "YulTypedName", + "src": "2424:2:0", + "type": "" + } + ] + } + ] + }, + "src": "2398:221:0" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3031:4:0", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3062:3:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3078:6:0" + }, + { + "arguments": [ + { + "name": "_preBytes", + "nodeType": "YulIdentifier", + "src": "3092:9:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3086:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "3086:16:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3074:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "3074:29:0" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3067:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "3067:37:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3058:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "3058:47:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3107:2:0", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3054:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "3054:56:0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3128:2:0", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "3124:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "3124:7:0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3037:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "3037:147:0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3024:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "3024:161:0" + }, + "nodeType": "YulExpressionStatement", + "src": "3024:161:0" + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 5, + "isOffset": false, + "isSlot": false, + "src": "2032:10:0", + "valueSize": 1 + }, + { + "declaration": 5, + "isOffset": false, + "isSlot": false, + "src": "2434:10:0", + "valueSize": 1 + }, + { + "declaration": 3, + "isOffset": false, + "isSlot": false, + "src": "1476:9:0", + "valueSize": 1 + }, + { + "declaration": 3, + "isOffset": false, + "isSlot": false, + "src": "3092:9:0", + "valueSize": 1 + }, + { + "declaration": 3, + "isOffset": false, + "isSlot": false, + "src": "889:9:0", + "valueSize": 1 + }, + { + "declaration": 11, + "isOffset": false, + "isSlot": false, + "src": "1149:9:0", + "valueSize": 1 + }, + { + "declaration": 11, + "isOffset": false, + "isSlot": false, + "src": "2063:9:0", + "valueSize": 1 + }, + { + "declaration": 11, + "isOffset": false, + "isSlot": false, + "src": "2092:9:0", + "valueSize": 1 + }, + { + "declaration": 11, + "isOffset": false, + "isSlot": false, + "src": "721:9:0", + "valueSize": 1 + }, + { + "declaration": 11, + "isOffset": false, + "isSlot": false, + "src": "919:9:0", + "valueSize": 1 + } + ], + "id": 13, + "nodeType": "InlineAssembly", + "src": "576:2619:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 14, + "name": "tempBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11, + "src": "3212:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 9, + "id": 15, + "nodeType": "Return", + "src": "3205:16:0" + } + ] + }, + "documentation": null, + "id": 17, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "concat", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3, + "mutability": "mutable", + "name": "_preBytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 17, + "src": "418:22:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "418:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5, + "mutability": "mutable", + "name": "_postBytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 17, + "src": "450:23:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "450:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "408:71:0" + }, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 17, + "src": "515:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "515:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "514:14:0" + }, + "scope": 333, + "src": "393:2835:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 25, + "nodeType": "Block", + "src": "3316:5543:0", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "3335:5518:0", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3546:34:0", + "value": { + "arguments": [ + { + "name": "_preBytes_slot", + "nodeType": "YulIdentifier", + "src": "3565:14:0" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "3559:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "3559:21:0" + }, + "variables": [ + { + "name": "fslot", + "nodeType": "YulTypedName", + "src": "3550:5:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4045:76:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "fslot", + "nodeType": "YulIdentifier", + "src": "4068:5:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4083:5:0", + "type": "", + "value": "0x100" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "fslot", + "nodeType": "YulIdentifier", + "src": "4101:5:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4108:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4097:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "4097:13:0" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4090:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "4090:21:0" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4079:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "4079:33:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4114:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4075:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "4075:41:0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4064:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "4064:53:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4119:1:0", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "4060:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "4060:61:0" + }, + "variables": [ + { + "name": "slength", + "nodeType": "YulTypedName", + "src": "4049:7:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4134:32:0", + "value": { + "arguments": [ + { + "name": "_postBytes", + "nodeType": "YulIdentifier", + "src": "4155:10:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4149:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "4149:17:0" + }, + "variables": [ + { + "name": "mlength", + "nodeType": "YulTypedName", + "src": "4138:7:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4179:38:0", + "value": { + "arguments": [ + { + "name": "slength", + "nodeType": "YulIdentifier", + "src": "4200:7:0" + }, + { + "name": "mlength", + "nodeType": "YulIdentifier", + "src": "4209:7:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4196:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "4196:21:0" + }, + "variables": [ + { + "name": "newlength", + "nodeType": "YulTypedName", + "src": "4183:9:0", + "type": "" + } + ] + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4538:1193:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "_preBytes_slot", + "nodeType": "YulIdentifier", + "src": "4803:14:0" + }, + { + "arguments": [ + { + "name": "fslot", + "nodeType": "YulIdentifier", + "src": "5079:5:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_postBytes", + "nodeType": "YulIdentifier", + "src": "5221:10:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5233:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5217:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "5217:21:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5211:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "5211:28:0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5308:5:0", + "type": "", + "value": "0x100" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5319:2:0", + "type": "", + "value": "32" + }, + { + "name": "mlength", + "nodeType": "YulIdentifier", + "src": "5323:7:0" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5315:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "5315:16:0" + } + ], + "functionName": { + "name": "exp", + "nodeType": "YulIdentifier", + "src": "5304:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "5304:28:0" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "5144:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "5144:206:0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5491:5:0", + "type": "", + "value": "0x100" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5502:2:0", + "type": "", + "value": "32" + }, + { + "name": "newlength", + "nodeType": "YulIdentifier", + "src": "5506:9:0" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5498:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "5498:18:0" + } + ], + "functionName": { + "name": "exp", + "nodeType": "YulIdentifier", + "src": "5487:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "5487:30:0" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5123:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "5123:412:0" + }, + { + "arguments": [ + { + "name": "mlength", + "nodeType": "YulIdentifier", + "src": "5652:7:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5661:1:0", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5648:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "5648:15:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5102:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "5102:579:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4934:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "4934:765:0" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "4779:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "4779:938:0" + }, + "nodeType": "YulExpressionStatement", + "src": "4779:938:0" + } + ] + }, + "nodeType": "YulCase", + "src": "4531:1200:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4536:1:0", + "type": "", + "value": "2" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5751:1827:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5948:3:0", + "type": "", + "value": "0x0" + }, + { + "name": "_preBytes_slot", + "nodeType": "YulIdentifier", + "src": "5953:14:0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5941:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "5941:27:0" + }, + "nodeType": "YulExpressionStatement", + "src": "5941:27:0" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5985:53:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6009:3:0", + "type": "", + "value": "0x0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6014:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "5999:9:0" + }, + "nodeType": "YulFunctionCall", + "src": "5999:20:0" + }, + { + "arguments": [ + { + "name": "slength", + "nodeType": "YulIdentifier", + "src": "6025:7:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6034:2:0", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "6021:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "6021:16:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5995:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "5995:43:0" + }, + "variables": [ + { + "name": "sc", + "nodeType": "YulTypedName", + "src": "5989:2:0", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_preBytes_slot", + "nodeType": "YulIdentifier", + "src": "6094:14:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "newlength", + "nodeType": "YulIdentifier", + "src": "6118:9:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6129:1:0", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6114:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "6114:17:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6133:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6110:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "6110:25:0" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "6087:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "6087:49:0" + }, + "nodeType": "YulExpressionStatement", + "src": "6087:49:0" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6692:30:0", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6710:2:0", + "type": "", + "value": "32" + }, + { + "name": "slength", + "nodeType": "YulIdentifier", + "src": "6714:7:0" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6706:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "6706:16:0" + }, + "variables": [ + { + "name": "submod", + "nodeType": "YulTypedName", + "src": "6696:6:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6739:33:0", + "value": { + "arguments": [ + { + "name": "_postBytes", + "nodeType": "YulIdentifier", + "src": "6753:10:0" + }, + { + "name": "submod", + "nodeType": "YulIdentifier", + "src": "6765:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6749:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "6749:23:0" + }, + "variables": [ + { + "name": "mc", + "nodeType": "YulTypedName", + "src": "6743:2:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6789:35:0", + "value": { + "arguments": [ + { + "name": "_postBytes", + "nodeType": "YulIdentifier", + "src": "6804:10:0" + }, + { + "name": "mlength", + "nodeType": "YulIdentifier", + "src": "6816:7:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6800:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "6800:24:0" + }, + "variables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6793:3:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6841:38:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6861:5:0", + "type": "", + "value": "0x100" + }, + { + "name": "submod", + "nodeType": "YulIdentifier", + "src": "6868:6:0" + } + ], + "functionName": { + "name": "exp", + "nodeType": "YulIdentifier", + "src": "6857:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "6857:18:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6877:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6853:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "6853:26:0" + }, + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "6845:4:0", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "6921:2:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "fslot", + "nodeType": "YulIdentifier", + "src": "6983:5:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7006:66:0", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6962:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "6962:128:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "7118:2:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7112:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "7112:9:0" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "7123:4:0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7108:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7108:20:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6941:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "6941:205:0" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "6897:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "6897:267:0" + }, + "nodeType": "YulExpressionStatement", + "src": "6897:267:0" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7392:61:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "7421:2:0" + }, + { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "7431:2:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7425:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "7425:9:0" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "7414:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "7414:21:0" + }, + "nodeType": "YulExpressionStatement", + "src": "7414:21:0" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "7286:2:0" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7290:3:0" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "7283:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "7283:11:0" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "7295:96:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7317:16:0", + "value": { + "arguments": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "7327:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7331:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7323:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7323:10:0" + }, + "variableNames": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "7317:2:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7354:19:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "7364:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7368:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7360:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7360:13:0" + }, + "variableNames": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "7354:2:0" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "7186:96:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7208:19:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "7218:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7222:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7214:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7214:13:0" + }, + "variableNames": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "7208:2:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7248:16:0", + "value": { + "arguments": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "7258:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7262:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7254:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7254:10:0" + }, + "variableNames": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "7248:2:0" + } + ] + } + ] + }, + "src": "7182:271:0" + }, + { + "nodeType": "YulAssignment", + "src": "7471:32:0", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7483:5:0", + "type": "", + "value": "0x100" + }, + { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "7494:2:0" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7498:3:0" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7490:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7490:12:0" + } + ], + "functionName": { + "name": "exp", + "nodeType": "YulIdentifier", + "src": "7479:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7479:24:0" + }, + "variableNames": [ + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "7471:4:0" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "7528:2:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "7546:2:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7540:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "7540:9:0" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "7551:4:0" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "7536:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7536:20:0" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "7558:4:0" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7532:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7532:31:0" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "7521:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "7521:43:0" + }, + "nodeType": "YulExpressionStatement", + "src": "7521:43:0" + } + ] + }, + "nodeType": "YulCase", + "src": "5744:1834:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5749:1:0", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7599:1244:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7692:3:0", + "type": "", + "value": "0x0" + }, + { + "name": "_preBytes_slot", + "nodeType": "YulIdentifier", + "src": "7697:14:0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7685:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "7685:27:0" + }, + "nodeType": "YulExpressionStatement", + "src": "7685:27:0" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7801:53:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7825:3:0", + "type": "", + "value": "0x0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7830:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "7815:9:0" + }, + "nodeType": "YulFunctionCall", + "src": "7815:20:0" + }, + { + "arguments": [ + { + "name": "slength", + "nodeType": "YulIdentifier", + "src": "7841:7:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7850:2:0", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "7837:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7837:16:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7811:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7811:43:0" + }, + "variables": [ + { + "name": "sc", + "nodeType": "YulTypedName", + "src": "7805:2:0", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_preBytes_slot", + "nodeType": "YulIdentifier", + "src": "7910:14:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "newlength", + "nodeType": "YulIdentifier", + "src": "7934:9:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7945:1:0", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7930:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7930:17:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7949:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7926:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7926:25:0" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "7903:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "7903:49:0" + }, + "nodeType": "YulExpressionStatement", + "src": "7903:49:0" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8071:34:0", + "value": { + "arguments": [ + { + "name": "slength", + "nodeType": "YulIdentifier", + "src": "8093:7:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8102:2:0", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mod", + "nodeType": "YulIdentifier", + "src": "8089:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8089:16:0" + }, + "variables": [ + { + "name": "slengthmod", + "nodeType": "YulTypedName", + "src": "8075:10:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8122:34:0", + "value": { + "arguments": [ + { + "name": "mlength", + "nodeType": "YulIdentifier", + "src": "8144:7:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8153:2:0", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mod", + "nodeType": "YulIdentifier", + "src": "8140:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8140:16:0" + }, + "variables": [ + { + "name": "mlengthmod", + "nodeType": "YulTypedName", + "src": "8126:10:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8173:33:0", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8191:2:0", + "type": "", + "value": "32" + }, + { + "name": "slengthmod", + "nodeType": "YulIdentifier", + "src": "8195:10:0" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8187:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8187:19:0" + }, + "variables": [ + { + "name": "submod", + "nodeType": "YulTypedName", + "src": "8177:6:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8223:33:0", + "value": { + "arguments": [ + { + "name": "_postBytes", + "nodeType": "YulIdentifier", + "src": "8237:10:0" + }, + { + "name": "submod", + "nodeType": "YulIdentifier", + "src": "8249:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8233:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8233:23:0" + }, + "variables": [ + { + "name": "mc", + "nodeType": "YulTypedName", + "src": "8227:2:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8273:35:0", + "value": { + "arguments": [ + { + "name": "_postBytes", + "nodeType": "YulIdentifier", + "src": "8288:10:0" + }, + { + "name": "mlength", + "nodeType": "YulIdentifier", + "src": "8300:7:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8284:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8284:24:0" + }, + "variables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "8277:3:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8325:38:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8345:5:0", + "type": "", + "value": "0x100" + }, + { + "name": "submod", + "nodeType": "YulIdentifier", + "src": "8352:6:0" + } + ], + "functionName": { + "name": "exp", + "nodeType": "YulIdentifier", + "src": "8341:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8341:18:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8361:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8337:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8337:26:0" + }, + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "8329:4:0", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "8388:2:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "8402:2:0" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "8396:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "8396:9:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "8417:2:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8411:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "8411:9:0" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "8422:4:0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "8407:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8407:20:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8392:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8392:36:0" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "8381:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "8381:48:0" + }, + "nodeType": "YulExpressionStatement", + "src": "8381:48:0" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8657:61:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "8686:2:0" + }, + { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "8696:2:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8690:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "8690:9:0" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "8679:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "8679:21:0" + }, + "nodeType": "YulExpressionStatement", + "src": "8679:21:0" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "8551:2:0" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "8555:3:0" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "8548:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "8548:11:0" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "8560:96:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8582:16:0", + "value": { + "arguments": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "8592:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8596:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8588:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8588:10:0" + }, + "variableNames": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "8582:2:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8619:19:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "8629:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8633:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8625:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8625:13:0" + }, + "variableNames": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "8619:2:0" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "8451:96:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8473:16:0", + "value": { + "arguments": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "8483:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8487:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8479:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8479:10:0" + }, + "variableNames": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "8473:2:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8510:19:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "8520:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8524:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8516:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8516:13:0" + }, + "variableNames": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "8510:2:0" + } + ] + } + ] + }, + "src": "8447:271:0" + }, + { + "nodeType": "YulAssignment", + "src": "8736:32:0", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8748:5:0", + "type": "", + "value": "0x100" + }, + { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "8759:2:0" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "8763:3:0" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8755:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8755:12:0" + } + ], + "functionName": { + "name": "exp", + "nodeType": "YulIdentifier", + "src": "8744:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8744:24:0" + }, + "variableNames": [ + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "8736:4:0" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "8793:2:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "8811:2:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8805:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "8805:9:0" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "8816:4:0" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8801:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8801:20:0" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "8823:4:0" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "8797:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8797:31:0" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "8786:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "8786:43:0" + }, + "nodeType": "YulExpressionStatement", + "src": "8786:43:0" + } + ] + }, + "nodeType": "YulCase", + "src": "7591:1252:0", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "slength", + "nodeType": "YulIdentifier", + "src": "4486:7:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4495:2:0", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "4483:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "4483:15:0" + }, + { + "arguments": [ + { + "name": "newlength", + "nodeType": "YulIdentifier", + "src": "4503:9:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4514:2:0", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "4500:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "4500:17:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4479:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "4479:39:0" + }, + "nodeType": "YulSwitch", + "src": "4472:4371:0" + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 21, + "isOffset": false, + "isSlot": false, + "src": "4155:10:0", + "valueSize": 1 + }, + { + "declaration": 21, + "isOffset": false, + "isSlot": false, + "src": "5221:10:0", + "valueSize": 1 + }, + { + "declaration": 21, + "isOffset": false, + "isSlot": false, + "src": "6753:10:0", + "valueSize": 1 + }, + { + "declaration": 21, + "isOffset": false, + "isSlot": false, + "src": "6804:10:0", + "valueSize": 1 + }, + { + "declaration": 21, + "isOffset": false, + "isSlot": false, + "src": "8237:10:0", + "valueSize": 1 + }, + { + "declaration": 21, + "isOffset": false, + "isSlot": false, + "src": "8288:10:0", + "valueSize": 1 + }, + { + "declaration": 19, + "isOffset": false, + "isSlot": true, + "src": "3565:14:0", + "valueSize": 1 + }, + { + "declaration": 19, + "isOffset": false, + "isSlot": true, + "src": "4803:14:0", + "valueSize": 1 + }, + { + "declaration": 19, + "isOffset": false, + "isSlot": true, + "src": "5953:14:0", + "valueSize": 1 + }, + { + "declaration": 19, + "isOffset": false, + "isSlot": true, + "src": "6094:14:0", + "valueSize": 1 + }, + { + "declaration": 19, + "isOffset": false, + "isSlot": true, + "src": "7697:14:0", + "valueSize": 1 + }, + { + "declaration": 19, + "isOffset": false, + "isSlot": true, + "src": "7910:14:0", + "valueSize": 1 + } + ], + "id": 24, + "nodeType": "InlineAssembly", + "src": "3326:5527:0" + } + ] + }, + "documentation": null, + "id": 26, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "concatStorage", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 22, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 19, + "mutability": "mutable", + "name": "_preBytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 26, + "src": "3257:23:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 18, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3257:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 21, + "mutability": "mutable", + "name": "_postBytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 26, + "src": "3282:23:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 20, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3282:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3256:50:0" + }, + "returnParameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [], + "src": "3316:0:0" + }, + "scope": 333, + "src": "3234:5625:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 54, + "nodeType": "Block", + "src": "9017:2328:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 38, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "9035:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 39, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9035:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 42, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 40, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "9053:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 41, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32, + "src": "9062:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9053:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 43, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9052:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9035:35:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "52656164206f7574206f6620626f756e6473", + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9072:20:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + }, + "value": "Read out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "id": 37, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "9027:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9027:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 47, + "nodeType": "ExpressionStatement", + "src": "9027:66:0" + }, + { + "assignments": [49], + "declarations": [ + { + "constant": false, + "id": 49, + "mutability": "mutable", + "name": "tempBytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 54, + "src": "9104:22:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 48, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9104:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 50, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9104:22:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "9146:2166:0", + "statements": [ + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9202:1888:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9350:24:0", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9369:4:0", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9363:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "9363:11:0" + }, + "variableNames": [ + { + "name": "tempBytes", + "nodeType": "YulIdentifier", + "src": "9350:9:0" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9966:33:0", + "value": { + "arguments": [ + { + "name": "_length", + "nodeType": "YulIdentifier", + "src": "9987:7:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9996:2:0", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "9983:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "9983:16:0" + }, + "variables": [ + { + "name": "lengthmod", + "nodeType": "YulTypedName", + "src": "9970:9:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10304:70:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "tempBytes", + "nodeType": "YulIdentifier", + "src": "10322:9:0" + }, + { + "name": "lengthmod", + "nodeType": "YulIdentifier", + "src": "10333:9:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10318:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "10318:25:0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10349:4:0", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "lengthmod", + "nodeType": "YulIdentifier", + "src": "10362:9:0" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10355:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "10355:17:0" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "10345:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "10345:28:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10314:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "10314:60:0" + }, + "variables": [ + { + "name": "mc", + "nodeType": "YulTypedName", + "src": "10308:2:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10391:27:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "10406:2:0" + }, + { + "name": "_length", + "nodeType": "YulIdentifier", + "src": "10410:7:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10402:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "10402:16:0" + }, + "variables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "10395:3:0", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10792:61:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "10821:2:0" + }, + { + "arguments": [ + { + "name": "cc", + "nodeType": "YulIdentifier", + "src": "10831:2:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "10825:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "10825:9:0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10814:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "10814:21:0" + }, + "nodeType": "YulExpressionStatement", + "src": "10814:21:0" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "10683:2:0" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "10687:3:0" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "10680:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "10680:11:0" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "10692:99:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10714:19:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "10724:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10728:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10720:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "10720:13:0" + }, + "variableNames": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "10714:2:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10754:19:0", + "value": { + "arguments": [ + { + "name": "cc", + "nodeType": "YulIdentifier", + "src": "10764:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10768:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10760:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "10760:13:0" + }, + "variableNames": [ + { + "name": "cc", + "nodeType": "YulIdentifier", + "src": "10754:2:0" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "10440:239:0", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10581:80:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_bytes", + "nodeType": "YulIdentifier", + "src": "10603:6:0" + }, + { + "name": "lengthmod", + "nodeType": "YulIdentifier", + "src": "10611:9:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10599:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "10599:22:0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10627:4:0", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "lengthmod", + "nodeType": "YulIdentifier", + "src": "10640:9:0" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10633:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "10633:17:0" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "10623:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "10623:28:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10595:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "10595:57:0" + }, + { + "name": "_start", + "nodeType": "YulIdentifier", + "src": "10654:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10591:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "10591:70:0" + }, + "variables": [ + { + "name": "cc", + "nodeType": "YulTypedName", + "src": "10585:2:0", + "type": "" + } + ] + } + ] + }, + "src": "10436:417:0" + }, + { + "expression": { + "arguments": [ + { + "name": "tempBytes", + "nodeType": "YulIdentifier", + "src": "10878:9:0" + }, + { + "name": "_length", + "nodeType": "YulIdentifier", + "src": "10889:7:0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10871:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "10871:26:0" + }, + "nodeType": "YulExpressionStatement", + "src": "10871:26:0" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11044:4:0", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "11058:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11062:2:0", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11054:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "11054:11:0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11071:2:0", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "11067:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "11067:7:0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "11050:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "11050:25:0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11037:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "11037:39:0" + }, + "nodeType": "YulExpressionStatement", + "src": "11037:39:0" + } + ] + }, + "nodeType": "YulCase", + "src": "9195:1895:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9200:1:0", + "type": "", + "value": "0" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11194:108:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11212:24:0", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11231:4:0", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11225:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "11225:11:0" + }, + "variableNames": [ + { + "name": "tempBytes", + "nodeType": "YulIdentifier", + "src": "11212:9:0" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11261:4:0", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "tempBytes", + "nodeType": "YulIdentifier", + "src": "11271:9:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11282:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11267:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "11267:20:0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11254:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "11254:34:0" + }, + "nodeType": "YulExpressionStatement", + "src": "11254:34:0" + } + ] + }, + "nodeType": "YulCase", + "src": "11186:116:0", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "_length", + "nodeType": "YulIdentifier", + "src": "9174:7:0" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "9167:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "9167:15:0" + }, + "nodeType": "YulSwitch", + "src": "9160:2142:0" + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 28, + "isOffset": false, + "isSlot": false, + "src": "10603:6:0", + "valueSize": 1 + }, + { + "declaration": 32, + "isOffset": false, + "isSlot": false, + "src": "10410:7:0", + "valueSize": 1 + }, + { + "declaration": 32, + "isOffset": false, + "isSlot": false, + "src": "10889:7:0", + "valueSize": 1 + }, + { + "declaration": 32, + "isOffset": false, + "isSlot": false, + "src": "9174:7:0", + "valueSize": 1 + }, + { + "declaration": 32, + "isOffset": false, + "isSlot": false, + "src": "9987:7:0", + "valueSize": 1 + }, + { + "declaration": 30, + "isOffset": false, + "isSlot": false, + "src": "10654:6:0", + "valueSize": 1 + }, + { + "declaration": 49, + "isOffset": false, + "isSlot": false, + "src": "10322:9:0", + "valueSize": 1 + }, + { + "declaration": 49, + "isOffset": false, + "isSlot": false, + "src": "10878:9:0", + "valueSize": 1 + }, + { + "declaration": 49, + "isOffset": false, + "isSlot": false, + "src": "11212:9:0", + "valueSize": 1 + }, + { + "declaration": 49, + "isOffset": false, + "isSlot": false, + "src": "11271:9:0", + "valueSize": 1 + }, + { + "declaration": 49, + "isOffset": false, + "isSlot": false, + "src": "9350:9:0", + "valueSize": 1 + } + ], + "id": 51, + "nodeType": "InlineAssembly", + "src": "9137:2175:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 52, + "name": "tempBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "11329:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 36, + "id": 53, + "nodeType": "Return", + "src": "11322:16:0" + } + ] + }, + "documentation": null, + "id": 55, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "slice", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 28, + "mutability": "mutable", + "name": "_bytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 55, + "src": "8889:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 27, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8889:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 30, + "mutability": "mutable", + "name": "_start", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 55, + "src": "8918:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8918:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32, + "mutability": "mutable", + "name": "_length", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 55, + "src": "8942:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 31, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8942:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8879:84:0" + }, + "returnParameters": { + "id": 36, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 55, + "src": "8999:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 34, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8999:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8998:14:0" + }, + "scope": 333, + "src": "8865:2480:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 81, + "nodeType": "Block", + "src": "11439:265:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 71, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 65, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "11457:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11457:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 69, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 67, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 59, + "src": "11475:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3230", + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11484:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "src": "11475:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 70, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11474:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11457:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "52656164206f7574206f6620626f756e6473", + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11489:20:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + }, + "value": "Read out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "id": 64, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "11449:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11449:61:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 74, + "nodeType": "ExpressionStatement", + "src": "11449:61:0" + }, + { + "assignments": [76], + "declarations": [ + { + "constant": false, + "id": 76, + "mutability": "mutable", + "name": "tempAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 81, + "src": "11520:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 75, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11520:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 77, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "11520:19:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "11559:110:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11573:86:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_bytes", + "nodeType": "YulIdentifier", + "src": "11606:6:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11614:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11602:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "11602:17:0" + }, + { + "name": "_start", + "nodeType": "YulIdentifier", + "src": "11621:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11598:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "11598:30:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11592:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "11592:37:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11631:27:0", + "type": "", + "value": "0x1000000000000000000000000" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11588:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "11588:71:0" + }, + "variableNames": [ + { + "name": "tempAddress", + "nodeType": "YulIdentifier", + "src": "11573:11:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 57, + "isOffset": false, + "isSlot": false, + "src": "11606:6:0", + "valueSize": 1 + }, + { + "declaration": 59, + "isOffset": false, + "isSlot": false, + "src": "11621:6:0", + "valueSize": 1 + }, + { + "declaration": 76, + "isOffset": false, + "isSlot": false, + "src": "11573:11:0", + "valueSize": 1 + } + ], + "id": 78, + "nodeType": "InlineAssembly", + "src": "11550:119:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 79, + "name": "tempAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "11686:11:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 63, + "id": 80, + "nodeType": "Return", + "src": "11679:18:0" + } + ] + }, + "documentation": null, + "id": 82, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toAddress", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 60, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57, + "mutability": "mutable", + "name": "_bytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 82, + "src": "11370:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 56, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11370:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 59, + "mutability": "mutable", + "name": "_start", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 82, + "src": "11391:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11391:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11369:37:0" + }, + "returnParameters": { + "id": 63, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 62, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 82, + "src": "11430:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 61, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11430:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11429:9:0" + }, + "scope": 333, + "src": "11351:353:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 108, + "nodeType": "Block", + "src": "11794:218:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 98, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 92, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 84, + "src": "11812:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11812:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 94, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "11830:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11839:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11830:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 97, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11829:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11812:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "52656164206f7574206f6620626f756e6473", + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11843:20:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + }, + "value": "Read out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "id": 91, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "11804:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11804:60:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 101, + "nodeType": "ExpressionStatement", + "src": "11804:60:0" + }, + { + "assignments": [103], + "declarations": [ + { + "constant": false, + "id": 103, + "mutability": "mutable", + "name": "tempUint", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 108, + "src": "11874:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 102, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "11874:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 104, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "11874:14:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "11908:72:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11922:48:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_bytes", + "nodeType": "YulIdentifier", + "src": "11948:6:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11956:3:0", + "type": "", + "value": "0x1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11944:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "11944:16:0" + }, + { + "name": "_start", + "nodeType": "YulIdentifier", + "src": "11962:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11940:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "11940:29:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11934:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "11934:36:0" + }, + "variableNames": [ + { + "name": "tempUint", + "nodeType": "YulIdentifier", + "src": "11922:8:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 84, + "isOffset": false, + "isSlot": false, + "src": "11948:6:0", + "valueSize": 1 + }, + { + "declaration": 86, + "isOffset": false, + "isSlot": false, + "src": "11962:6:0", + "valueSize": 1 + }, + { + "declaration": 103, + "isOffset": false, + "isSlot": false, + "src": "11922:8:0", + "valueSize": 1 + } + ], + "id": 105, + "nodeType": "InlineAssembly", + "src": "11899:81:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 106, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "11997:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 90, + "id": 107, + "nodeType": "Return", + "src": "11990:15:0" + } + ] + }, + "documentation": null, + "id": 109, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint8", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 87, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 84, + "mutability": "mutable", + "name": "_bytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 109, + "src": "11727:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 83, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11727:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 86, + "mutability": "mutable", + "name": "_start", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 109, + "src": "11748:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 85, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11748:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11726:37:0" + }, + "returnParameters": { + "id": 90, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 89, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 109, + "src": "11787:5:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 88, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "11787:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11786:7:0" + }, + "scope": 333, + "src": "11710:302:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 135, + "nodeType": "Block", + "src": "12104:219:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 119, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 111, + "src": "12122:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12122:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 121, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "12140:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12149:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "12140:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 124, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12139:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12122:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "52656164206f7574206f6620626f756e6473", + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12153:20:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + }, + "value": "Read out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "id": 118, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "12114:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12114:60:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 128, + "nodeType": "ExpressionStatement", + "src": "12114:60:0" + }, + { + "assignments": [130], + "declarations": [ + { + "constant": false, + "id": 130, + "mutability": "mutable", + "name": "tempUint", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 135, + "src": "12184:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 129, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "12184:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 131, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "12184:15:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "12219:72:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12233:48:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_bytes", + "nodeType": "YulIdentifier", + "src": "12259:6:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12267:3:0", + "type": "", + "value": "0x2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12255:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "12255:16:0" + }, + { + "name": "_start", + "nodeType": "YulIdentifier", + "src": "12273:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12251:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "12251:29:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12245:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "12245:36:0" + }, + "variableNames": [ + { + "name": "tempUint", + "nodeType": "YulIdentifier", + "src": "12233:8:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 111, + "isOffset": false, + "isSlot": false, + "src": "12259:6:0", + "valueSize": 1 + }, + { + "declaration": 113, + "isOffset": false, + "isSlot": false, + "src": "12273:6:0", + "valueSize": 1 + }, + { + "declaration": 130, + "isOffset": false, + "isSlot": false, + "src": "12233:8:0", + "valueSize": 1 + } + ], + "id": 132, + "nodeType": "InlineAssembly", + "src": "12210:81:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 133, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "12308:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "functionReturnParameters": 117, + "id": 134, + "nodeType": "Return", + "src": "12301:15:0" + } + ] + }, + "documentation": null, + "id": 136, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint16", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 114, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 111, + "mutability": "mutable", + "name": "_bytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 136, + "src": "12036:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 110, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12036:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 113, + "mutability": "mutable", + "name": "_start", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 136, + "src": "12057:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 112, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12057:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12035:37:0" + }, + "returnParameters": { + "id": 117, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 116, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 136, + "src": "12096:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 115, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "12096:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12095:8:0" + }, + "scope": 333, + "src": "12018:305:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 162, + "nodeType": "Block", + "src": "12415:219:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 146, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 138, + "src": "12433:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12433:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 148, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 140, + "src": "12451:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12460:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "12451:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 151, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12450:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12433:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "52656164206f7574206f6620626f756e6473", + "id": 153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12464:20:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + }, + "value": "Read out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "id": 145, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "12425:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12425:60:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 155, + "nodeType": "ExpressionStatement", + "src": "12425:60:0" + }, + { + "assignments": [157], + "declarations": [ + { + "constant": false, + "id": 157, + "mutability": "mutable", + "name": "tempUint", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 162, + "src": "12495:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 156, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "12495:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 158, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "12495:15:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "12530:72:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12544:48:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_bytes", + "nodeType": "YulIdentifier", + "src": "12570:6:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12578:3:0", + "type": "", + "value": "0x4" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12566:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "12566:16:0" + }, + { + "name": "_start", + "nodeType": "YulIdentifier", + "src": "12584:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12562:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "12562:29:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12556:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "12556:36:0" + }, + "variableNames": [ + { + "name": "tempUint", + "nodeType": "YulIdentifier", + "src": "12544:8:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 138, + "isOffset": false, + "isSlot": false, + "src": "12570:6:0", + "valueSize": 1 + }, + { + "declaration": 140, + "isOffset": false, + "isSlot": false, + "src": "12584:6:0", + "valueSize": 1 + }, + { + "declaration": 157, + "isOffset": false, + "isSlot": false, + "src": "12544:8:0", + "valueSize": 1 + } + ], + "id": 159, + "nodeType": "InlineAssembly", + "src": "12521:81:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 160, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 157, + "src": "12619:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "functionReturnParameters": 144, + "id": 161, + "nodeType": "Return", + "src": "12612:15:0" + } + ] + }, + "documentation": null, + "id": 163, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint32", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 141, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 138, + "mutability": "mutable", + "name": "_bytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 163, + "src": "12347:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 137, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12347:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 140, + "mutability": "mutable", + "name": "_start", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 163, + "src": "12368:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 139, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12368:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12346:37:0" + }, + "returnParameters": { + "id": 144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 143, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 163, + "src": "12407:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 142, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "12407:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12406:8:0" + }, + "scope": 333, + "src": "12329:305:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 189, + "nodeType": "Block", + "src": "12726:219:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 173, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "12744:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12744:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 175, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "12762:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "38", + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12771:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "12762:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 178, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12761:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12744:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "52656164206f7574206f6620626f756e6473", + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12775:20:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + }, + "value": "Read out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "id": 172, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "12736:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12736:60:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 182, + "nodeType": "ExpressionStatement", + "src": "12736:60:0" + }, + { + "assignments": [184], + "declarations": [ + { + "constant": false, + "id": 184, + "mutability": "mutable", + "name": "tempUint", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 189, + "src": "12806:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 183, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "12806:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 185, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "12806:15:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "12841:72:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12855:48:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_bytes", + "nodeType": "YulIdentifier", + "src": "12881:6:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12889:3:0", + "type": "", + "value": "0x8" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12877:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "12877:16:0" + }, + { + "name": "_start", + "nodeType": "YulIdentifier", + "src": "12895:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12873:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "12873:29:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12867:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "12867:36:0" + }, + "variableNames": [ + { + "name": "tempUint", + "nodeType": "YulIdentifier", + "src": "12855:8:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 165, + "isOffset": false, + "isSlot": false, + "src": "12881:6:0", + "valueSize": 1 + }, + { + "declaration": 167, + "isOffset": false, + "isSlot": false, + "src": "12895:6:0", + "valueSize": 1 + }, + { + "declaration": 184, + "isOffset": false, + "isSlot": false, + "src": "12855:8:0", + "valueSize": 1 + } + ], + "id": 186, + "nodeType": "InlineAssembly", + "src": "12832:81:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 187, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "12930:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "functionReturnParameters": 171, + "id": 188, + "nodeType": "Return", + "src": "12923:15:0" + } + ] + }, + "documentation": null, + "id": 190, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint64", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 165, + "mutability": "mutable", + "name": "_bytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 190, + "src": "12658:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 164, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12658:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 167, + "mutability": "mutable", + "name": "_start", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 190, + "src": "12679:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 166, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12679:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12657:37:0" + }, + "returnParameters": { + "id": 171, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 170, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 190, + "src": "12718:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 169, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "12718:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12717:8:0" + }, + "scope": 333, + "src": "12640:305:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 216, + "nodeType": "Block", + "src": "13037:220:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 200, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 192, + "src": "13055:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13055:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 202, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "13073:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3132", + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13082:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_12_by_1", + "typeString": "int_const 12" + }, + "value": "12" + }, + "src": "13073:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 205, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13072:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13055:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "52656164206f7574206f6620626f756e6473", + "id": 207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13087:20:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + }, + "value": "Read out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "id": 199, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "13047:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13047:61:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 209, + "nodeType": "ExpressionStatement", + "src": "13047:61:0" + }, + { + "assignments": [211], + "declarations": [ + { + "constant": false, + "id": 211, + "mutability": "mutable", + "name": "tempUint", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 216, + "src": "13118:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + }, + "typeName": { + "id": 210, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "13118:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 212, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "13118:15:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "13153:72:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13167:48:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_bytes", + "nodeType": "YulIdentifier", + "src": "13193:6:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13201:3:0", + "type": "", + "value": "0xc" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13189:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "13189:16:0" + }, + { + "name": "_start", + "nodeType": "YulIdentifier", + "src": "13207:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13185:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "13185:29:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "13179:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "13179:36:0" + }, + "variableNames": [ + { + "name": "tempUint", + "nodeType": "YulIdentifier", + "src": "13167:8:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 192, + "isOffset": false, + "isSlot": false, + "src": "13193:6:0", + "valueSize": 1 + }, + { + "declaration": 194, + "isOffset": false, + "isSlot": false, + "src": "13207:6:0", + "valueSize": 1 + }, + { + "declaration": 211, + "isOffset": false, + "isSlot": false, + "src": "13167:8:0", + "valueSize": 1 + } + ], + "id": 213, + "nodeType": "InlineAssembly", + "src": "13144:81:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 214, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "13242:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "functionReturnParameters": 198, + "id": 215, + "nodeType": "Return", + "src": "13235:15:0" + } + ] + }, + "documentation": null, + "id": 217, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint96", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 195, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 192, + "mutability": "mutable", + "name": "_bytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 217, + "src": "12969:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 191, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12969:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 194, + "mutability": "mutable", + "name": "_start", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 217, + "src": "12990:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 193, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12990:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12968:37:0" + }, + "returnParameters": { + "id": 198, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 197, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 217, + "src": "13029:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + }, + "typeName": { + "id": 196, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "13029:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13028:8:0" + }, + "scope": 333, + "src": "12951:306:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 243, + "nodeType": "Block", + "src": "13351:222:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 227, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 219, + "src": "13369:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13369:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 229, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 221, + "src": "13387:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3136", + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13396:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "13387:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 232, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13386:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13369:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "52656164206f7574206f6620626f756e6473", + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13401:20:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + }, + "value": "Read out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "id": 226, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "13361:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13361:61:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 236, + "nodeType": "ExpressionStatement", + "src": "13361:61:0" + }, + { + "assignments": [238], + "declarations": [ + { + "constant": false, + "id": 238, + "mutability": "mutable", + "name": "tempUint", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 243, + "src": "13432:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 237, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "13432:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 239, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "13432:16:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "13468:73:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13482:49:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_bytes", + "nodeType": "YulIdentifier", + "src": "13508:6:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13516:4:0", + "type": "", + "value": "0x10" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13504:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "13504:17:0" + }, + { + "name": "_start", + "nodeType": "YulIdentifier", + "src": "13523:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13500:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "13500:30:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "13494:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "13494:37:0" + }, + "variableNames": [ + { + "name": "tempUint", + "nodeType": "YulIdentifier", + "src": "13482:8:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 219, + "isOffset": false, + "isSlot": false, + "src": "13508:6:0", + "valueSize": 1 + }, + { + "declaration": 221, + "isOffset": false, + "isSlot": false, + "src": "13523:6:0", + "valueSize": 1 + }, + { + "declaration": 238, + "isOffset": false, + "isSlot": false, + "src": "13482:8:0", + "valueSize": 1 + } + ], + "id": 240, + "nodeType": "InlineAssembly", + "src": "13459:82:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 241, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 238, + "src": "13558:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 225, + "id": 242, + "nodeType": "Return", + "src": "13551:15:0" + } + ] + }, + "documentation": null, + "id": 244, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint128", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 219, + "mutability": "mutable", + "name": "_bytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 244, + "src": "13282:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 218, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13282:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 221, + "mutability": "mutable", + "name": "_start", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 244, + "src": "13303:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 220, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13303:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13281:37:0" + }, + "returnParameters": { + "id": 225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 224, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 244, + "src": "13342:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 223, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "13342:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13341:9:0" + }, + "scope": 333, + "src": "13263:310:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 270, + "nodeType": "Block", + "src": "13667:222:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 254, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 246, + "src": "13685:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13685:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 256, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 248, + "src": "13703:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3332", + "id": 257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13712:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "13703:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 259, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13702:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13685:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "52656164206f7574206f6620626f756e6473", + "id": 261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13717:20:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + }, + "value": "Read out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "id": 253, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "13677:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13677:61:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 263, + "nodeType": "ExpressionStatement", + "src": "13677:61:0" + }, + { + "assignments": [265], + "declarations": [ + { + "constant": false, + "id": 265, + "mutability": "mutable", + "name": "tempUint", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 270, + "src": "13748:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 264, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13748:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 266, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "13748:16:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "13784:73:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13798:49:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_bytes", + "nodeType": "YulIdentifier", + "src": "13824:6:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13832:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13820:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "13820:17:0" + }, + { + "name": "_start", + "nodeType": "YulIdentifier", + "src": "13839:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13816:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "13816:30:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "13810:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "13810:37:0" + }, + "variableNames": [ + { + "name": "tempUint", + "nodeType": "YulIdentifier", + "src": "13798:8:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 246, + "isOffset": false, + "isSlot": false, + "src": "13824:6:0", + "valueSize": 1 + }, + { + "declaration": 248, + "isOffset": false, + "isSlot": false, + "src": "13839:6:0", + "valueSize": 1 + }, + { + "declaration": 265, + "isOffset": false, + "isSlot": false, + "src": "13798:8:0", + "valueSize": 1 + } + ], + "id": 267, + "nodeType": "InlineAssembly", + "src": "13775:82:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 268, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "13874:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 252, + "id": 269, + "nodeType": "Return", + "src": "13867:15:0" + } + ] + }, + "documentation": null, + "id": 271, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint256", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 246, + "mutability": "mutable", + "name": "_bytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 271, + "src": "13598:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 245, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13598:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 248, + "mutability": "mutable", + "name": "_start", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 271, + "src": "13619:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13619:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13597:37:0" + }, + "returnParameters": { + "id": 252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 251, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 271, + "src": "13658:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13658:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13657:9:0" + }, + "scope": 333, + "src": "13579:310:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 297, + "nodeType": "Block", + "src": "13983:231:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 281, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "14001:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14001:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 283, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 275, + "src": "14019:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3332", + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14028:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "14019:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 286, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14018:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14001:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "52656164206f7574206f6620626f756e6473", + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14033:20:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + }, + "value": "Read out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "id": 280, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "13993:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13993:61:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 290, + "nodeType": "ExpressionStatement", + "src": "13993:61:0" + }, + { + "assignments": [292], + "declarations": [ + { + "constant": false, + "id": 292, + "mutability": "mutable", + "name": "tempBytes32", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 297, + "src": "14064:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 291, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14064:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 293, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "14064:19:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "14103:76:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14117:52:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_bytes", + "nodeType": "YulIdentifier", + "src": "14146:6:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14154:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14142:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "14142:17:0" + }, + { + "name": "_start", + "nodeType": "YulIdentifier", + "src": "14161:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14138:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "14138:30:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "14132:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "14132:37:0" + }, + "variableNames": [ + { + "name": "tempBytes32", + "nodeType": "YulIdentifier", + "src": "14117:11:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 273, + "isOffset": false, + "isSlot": false, + "src": "14146:6:0", + "valueSize": 1 + }, + { + "declaration": 275, + "isOffset": false, + "isSlot": false, + "src": "14161:6:0", + "valueSize": 1 + }, + { + "declaration": 292, + "isOffset": false, + "isSlot": false, + "src": "14117:11:0", + "valueSize": 1 + } + ], + "id": 294, + "nodeType": "InlineAssembly", + "src": "14094:85:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 295, + "name": "tempBytes32", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 292, + "src": "14196:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 279, + "id": 296, + "nodeType": "Return", + "src": "14189:18:0" + } + ] + }, + "documentation": null, + "id": 298, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toBytes32", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 273, + "mutability": "mutable", + "name": "_bytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 298, + "src": "13914:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 272, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13914:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 275, + "mutability": "mutable", + "name": "_start", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 298, + "src": "13935:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 274, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13935:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13913:37:0" + }, + "returnParameters": { + "id": 279, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 278, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 298, + "src": "13974:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 277, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13974:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13973:9:0" + }, + "scope": 333, + "src": "13895:319:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 314, + "nodeType": "Block", + "src": "14313:1291:0", + "statements": [ + { + "assignments": [308], + "declarations": [ + { + "constant": false, + "id": 308, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 314, + "src": "14323:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 307, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14323:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 310, + "initialValue": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 309, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14338:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14323:19:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "14362:1211:0", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14376:30:0", + "value": { + "arguments": [ + { + "name": "_preBytes", + "nodeType": "YulIdentifier", + "src": "14396:9:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "14390:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "14390:16:0" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "14380:6:0", + "type": "" + } + ] + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "14535:937:0", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14748:11:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14758:1:0", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "cb", + "nodeType": "YulTypedName", + "src": "14752:2:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14777:30:0", + "value": { + "arguments": [ + { + "name": "_preBytes", + "nodeType": "YulIdentifier", + "src": "14791:9:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14802:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14787:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "14787:20:0" + }, + "variables": [ + { + "name": "mc", + "nodeType": "YulTypedName", + "src": "14781:2:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14824:26:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "14839:2:0" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14843:6:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14835:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "14835:15:0" + }, + "variables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "14828:3:0", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15182:276:0", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15314:126:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15374:12:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15385:1:0", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "15374:7:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15411:7:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15417:1:0", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "cb", + "nodeType": "YulIdentifier", + "src": "15411:2:0" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "15297:2:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "15291:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "15291:9:0" + }, + { + "arguments": [ + { + "name": "cc", + "nodeType": "YulIdentifier", + "src": "15308:2:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "15302:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "15302:9:0" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "15288:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "15288:24:0" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "15281:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "15281:32:0" + }, + "nodeType": "YulIf", + "src": "15278:2:0" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "15064:2:0" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "15068:3:0" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "15061:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "15061:11:0" + }, + { + "name": "cb", + "nodeType": "YulIdentifier", + "src": "15074:2:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15057:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "15057:20:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15079:1:0", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "15054:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "15054:27:0" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "15082:99:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15104:19:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "15114:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15118:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15110:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "15110:13:0" + }, + "variableNames": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "15104:2:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15144:19:0", + "value": { + "arguments": [ + { + "name": "cc", + "nodeType": "YulIdentifier", + "src": "15154:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15158:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15150:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "15150:13:0" + }, + "variableNames": [ + { + "name": "cc", + "nodeType": "YulIdentifier", + "src": "15144:2:0" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "14872:181:0", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14894:31:0", + "value": { + "arguments": [ + { + "name": "_postBytes", + "nodeType": "YulIdentifier", + "src": "14908:10:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14920:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14904:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "14904:21:0" + }, + "variables": [ + { + "name": "cc", + "nodeType": "YulTypedName", + "src": "14898:2:0", + "type": "" + } + ] + } + ] + }, + "src": "14868:590:0" + } + ] + }, + "nodeType": "YulCase", + "src": "14528:944:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14533:1:0", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15493:70:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15537:12:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15548:1:0", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "15537:7:0" + } + ] + } + ] + }, + "nodeType": "YulCase", + "src": "15485:78:0", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14489:6:0" + }, + { + "arguments": [ + { + "name": "_postBytes", + "nodeType": "YulIdentifier", + "src": "14503:10:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "14497:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "14497:17:0" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "14486:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "14486:29:0" + }, + "nodeType": "YulSwitch", + "src": "14479:1084:0" + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 302, + "isOffset": false, + "isSlot": false, + "src": "14503:10:0", + "valueSize": 1 + }, + { + "declaration": 302, + "isOffset": false, + "isSlot": false, + "src": "14908:10:0", + "valueSize": 1 + }, + { + "declaration": 300, + "isOffset": false, + "isSlot": false, + "src": "14396:9:0", + "valueSize": 1 + }, + { + "declaration": 300, + "isOffset": false, + "isSlot": false, + "src": "14791:9:0", + "valueSize": 1 + }, + { + "declaration": 308, + "isOffset": false, + "isSlot": false, + "src": "15374:7:0", + "valueSize": 1 + }, + { + "declaration": 308, + "isOffset": false, + "isSlot": false, + "src": "15537:7:0", + "valueSize": 1 + } + ], + "id": 311, + "nodeType": "InlineAssembly", + "src": "14353:1220:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 312, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 308, + "src": "15590:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 306, + "id": 313, + "nodeType": "Return", + "src": "15583:14:0" + } + ] + }, + "documentation": null, + "id": 315, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "equal", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 303, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 300, + "mutability": "mutable", + "name": "_preBytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 315, + "src": "14235:22:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 299, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14235:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 302, + "mutability": "mutable", + "name": "_postBytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 315, + "src": "14259:23:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 301, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14259:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14234:49:0" + }, + "returnParameters": { + "id": 306, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 305, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 315, + "src": "14307:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 304, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14307:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14306:6:0" + }, + "scope": 333, + "src": "14220:1384:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 331, + "nodeType": "Block", + "src": "15749:2491:0", + "statements": [ + { + "assignments": [325], + "declarations": [ + { + "constant": false, + "id": 325, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 331, + "src": "15759:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 324, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15759:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 327, + "initialValue": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 326, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15774:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "nodeType": "VariableDeclarationStatement", + "src": "15759:19:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "15798:2411:0", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "15853:34:0", + "value": { + "arguments": [ + { + "name": "_preBytes_slot", + "nodeType": "YulIdentifier", + "src": "15872:14:0" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "15866:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "15866:21:0" + }, + "variables": [ + { + "name": "fslot", + "nodeType": "YulTypedName", + "src": "15857:5:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15974:76:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "fslot", + "nodeType": "YulIdentifier", + "src": "15997:5:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16012:5:0", + "type": "", + "value": "0x100" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "fslot", + "nodeType": "YulIdentifier", + "src": "16030:5:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16037:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16026:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "16026:13:0" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16019:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "16019:21:0" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "16008:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "16008:33:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16043:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "16004:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "16004:41:0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "15993:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "15993:53:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16048:1:0", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "15989:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "15989:61:0" + }, + "variables": [ + { + "name": "slength", + "nodeType": "YulTypedName", + "src": "15978:7:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16063:32:0", + "value": { + "arguments": [ + { + "name": "_postBytes", + "nodeType": "YulIdentifier", + "src": "16084:10:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "16078:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "16078:17:0" + }, + "variables": [ + { + "name": "mlength", + "nodeType": "YulTypedName", + "src": "16067:7:0", + "type": "" + } + ] + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16215:1893:0", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16514:1580:0", + "statements": [ + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16586:332:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16675:38:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "fslot", + "nodeType": "YulIdentifier", + "src": "16692:5:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16699:5:0", + "type": "", + "value": "0x100" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "16688:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "16688:17:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16707:5:0", + "type": "", + "value": "0x100" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "16684:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "16684:29:0" + }, + "variableNames": [ + { + "name": "fslot", + "nodeType": "YulIdentifier", + "src": "16675:5:0" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16790:106:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16858:12:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16869:1:0", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "16858:7:0" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "fslot", + "nodeType": "YulIdentifier", + "src": "16752:5:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_postBytes", + "nodeType": "YulIdentifier", + "src": "16769:10:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16781:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16765:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "16765:21:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "16759:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "16759:28:0" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "16749:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "16749:39:0" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16742:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "16742:47:0" + }, + "nodeType": "YulIf", + "src": "16739:2:0" + } + ] + }, + "nodeType": "YulCase", + "src": "16579:339:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16584:1:0", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16947:1129:0", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "17200:11:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17210:1:0", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "cb", + "nodeType": "YulTypedName", + "src": "17204:2:0", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17320:3:0", + "type": "", + "value": "0x0" + }, + { + "name": "_preBytes_slot", + "nodeType": "YulIdentifier", + "src": "17325:14:0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17313:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "17313:27:0" + }, + "nodeType": "YulExpressionStatement", + "src": "17313:27:0" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "17365:30:0", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17385:3:0", + "type": "", + "value": "0x0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17390:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "17375:9:0" + }, + "nodeType": "YulFunctionCall", + "src": "17375:20:0" + }, + "variables": [ + { + "name": "sc", + "nodeType": "YulTypedName", + "src": "17369:2:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "17421:31:0", + "value": { + "arguments": [ + { + "name": "_postBytes", + "nodeType": "YulIdentifier", + "src": "17435:10:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17447:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17431:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "17431:21:0" + }, + "variables": [ + { + "name": "mc", + "nodeType": "YulTypedName", + "src": "17425:2:0", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "17477:27:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "17492:2:0" + }, + { + "name": "mlength", + "nodeType": "YulIdentifier", + "src": "17496:7:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17488:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "17488:16:0" + }, + "variables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "17481:3:0", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17804:250:0", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17870:158:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17946:12:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17957:1:0", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "17946:7:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17991:7:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17997:1:0", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "cb", + "nodeType": "YulIdentifier", + "src": "17991:2:0" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "17853:2:0" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "17847:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "17847:9:0" + }, + { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "17864:2:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "17858:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "17858:9:0" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "17844:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "17844:24:0" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "17837:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "17837:32:0" + }, + "nodeType": "YulIf", + "src": "17834:2:0" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "17665:2:0" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "17669:3:0" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17662:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "17662:11:0" + }, + { + "name": "cb", + "nodeType": "YulIdentifier", + "src": "17675:2:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17658:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "17658:20:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17680:1:0", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "17655:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "17655:27:0" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "17683:120:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17713:16:0", + "value": { + "arguments": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "17723:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17727:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17719:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "17719:10:0" + }, + "variableNames": [ + { + "name": "sc", + "nodeType": "YulIdentifier", + "src": "17713:2:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17758:19:0", + "value": { + "arguments": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "17768:2:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17772:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17764:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "17764:13:0" + }, + "variableNames": [ + { + "name": "mc", + "nodeType": "YulIdentifier", + "src": "17758:2:0" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "17652:2:0", + "statements": [] + }, + "src": "17648:406:0" + } + ] + }, + "nodeType": "YulCase", + "src": "16939:1137:0", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "slength", + "nodeType": "YulIdentifier", + "src": "16546:7:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16555:2:0", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "16543:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "16543:15:0" + }, + "nodeType": "YulSwitch", + "src": "16536:1540:0" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "slength", + "nodeType": "YulIdentifier", + "src": "16504:7:0" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16497:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "16497:15:0" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16490:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "16490:23:0" + }, + "nodeType": "YulIf", + "src": "16487:2:0" + } + ] + }, + "nodeType": "YulCase", + "src": "16208:1900:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16213:1:0", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18129:70:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18173:12:0", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18184:1:0", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "18173:7:0" + } + ] + } + ] + }, + "nodeType": "YulCase", + "src": "18121:78:0", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "slength", + "nodeType": "YulIdentifier", + "src": "16178:7:0" + }, + { + "name": "mlength", + "nodeType": "YulIdentifier", + "src": "16187:7:0" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "16175:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "16175:20:0" + }, + "nodeType": "YulSwitch", + "src": "16168:2031:0" + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 319, + "isOffset": false, + "isSlot": false, + "src": "16084:10:0", + "valueSize": 1 + }, + { + "declaration": 319, + "isOffset": false, + "isSlot": false, + "src": "16769:10:0", + "valueSize": 1 + }, + { + "declaration": 319, + "isOffset": false, + "isSlot": false, + "src": "17435:10:0", + "valueSize": 1 + }, + { + "declaration": 317, + "isOffset": false, + "isSlot": true, + "src": "15872:14:0", + "valueSize": 1 + }, + { + "declaration": 317, + "isOffset": false, + "isSlot": true, + "src": "17325:14:0", + "valueSize": 1 + }, + { + "declaration": 325, + "isOffset": false, + "isSlot": false, + "src": "16858:7:0", + "valueSize": 1 + }, + { + "declaration": 325, + "isOffset": false, + "isSlot": false, + "src": "17946:7:0", + "valueSize": 1 + }, + { + "declaration": 325, + "isOffset": false, + "isSlot": false, + "src": "18173:7:0", + "valueSize": 1 + } + ], + "id": 328, + "nodeType": "InlineAssembly", + "src": "15789:2420:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 329, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 325, + "src": "18226:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 323, + "id": 330, + "nodeType": "Return", + "src": "18219:14:0" + } + ] + }, + "documentation": null, + "id": 332, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "equalStorage", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 320, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 317, + "mutability": "mutable", + "name": "_preBytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 332, + "src": "15641:23:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 316, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15641:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 319, + "mutability": "mutable", + "name": "_postBytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 332, + "src": "15674:23:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 318, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15674:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15631:72:0" + }, + "returnParameters": { + "id": 323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 322, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 332, + "src": "15739:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 321, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15739:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15738:6:0" + }, + "scope": 333, + "src": "15610:2630:0", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 334, + "src": "370:17872:0" + } + ], + "src": "336:17907:0" + }, + "legacyAST": { + "attributes": { + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/BytesLib.sol", + "exportedSymbols": { + "BytesLib": [333] + }, + "license": "Unlicense" + }, + "children": [ + { + "attributes": { + "literals": ["solidity", ">=", "0.5", ".0", "<", "0.7", ".0"] + }, + "id": 1, + "name": "PragmaDirective", + "src": "336:31:0" + }, + { + "attributes": { + "abstract": false, + "baseContracts": [null], + "contractDependencies": [null], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "linearizedBaseContracts": [333], + "name": "BytesLib", + "scope": 334 + }, + "children": [ + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "concat", + "overrides": null, + "scope": 333, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_preBytes", + "overrides": null, + "scope": 17, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 2, + "name": "ElementaryTypeName", + "src": "418:5:0" + } + ], + "id": 3, + "name": "VariableDeclaration", + "src": "418:22:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_postBytes", + "overrides": null, + "scope": 17, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 4, + "name": "ElementaryTypeName", + "src": "450:5:0" + } + ], + "id": 5, + "name": "VariableDeclaration", + "src": "450:23:0" + } + ], + "id": 6, + "name": "ParameterList", + "src": "408:71:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 17, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 7, + "name": "ElementaryTypeName", + "src": "515:5:0" + } + ], + "id": 8, + "name": "VariableDeclaration", + "src": "515:12:0" + } + ], + "id": 9, + "name": "ParameterList", + "src": "514:14:0" + }, + { + "children": [ + { + "attributes": { + "assignments": [11], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "tempBytes", + "overrides": null, + "scope": 16, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 10, + "name": "ElementaryTypeName", + "src": "543:5:0" + } + ], + "id": 11, + "name": "VariableDeclaration", + "src": "543:22:0" + } + ], + "id": 12, + "name": "VariableDeclarationStatement", + "src": "543:22:0" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 5, + "isOffset": false, + "isSlot": false, + "src": "2032:10:0", + "valueSize": 1 + }, + { + "declaration": 5, + "isOffset": false, + "isSlot": false, + "src": "2434:10:0", + "valueSize": 1 + }, + { + "declaration": 3, + "isOffset": false, + "isSlot": false, + "src": "1476:9:0", + "valueSize": 1 + }, + { + "declaration": 3, + "isOffset": false, + "isSlot": false, + "src": "3092:9:0", + "valueSize": 1 + }, + { + "declaration": 3, + "isOffset": false, + "isSlot": false, + "src": "889:9:0", + "valueSize": 1 + }, + { + "declaration": 11, + "isOffset": false, + "isSlot": false, + "src": "1149:9:0", + "valueSize": 1 + }, + { + "declaration": 11, + "isOffset": false, + "isSlot": false, + "src": "2063:9:0", + "valueSize": 1 + }, + { + "declaration": 11, + "isOffset": false, + "isSlot": false, + "src": "2092:9:0", + "valueSize": 1 + }, + { + "declaration": 11, + "isOffset": false, + "isSlot": false, + "src": "721:9:0", + "valueSize": 1 + }, + { + "declaration": 11, + "isOffset": false, + "isSlot": false, + "src": "919:9:0", + "valueSize": 1 + } + ], + "operations": "{\n tempBytes := mload(0x40)\n let length := mload(_preBytes)\n mstore(tempBytes, length)\n let mc := add(tempBytes, 0x20)\n let end := add(mc, length)\n for {\n let cc := add(_preBytes, 0x20)\n }\n lt(mc, end)\n {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n }\n { mstore(mc, mload(cc)) }\n length := mload(_postBytes)\n mstore(tempBytes, add(length, mload(tempBytes)))\n mc := end\n end := add(mc, length)\n for {\n let cc := add(_postBytes, 0x20)\n }\n lt(mc, end)\n {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n }\n { mstore(mc, mload(cc)) }\n mstore(0x40, and(add(add(end, iszero(add(length, mload(_preBytes)))), 31), not(31)))\n}" + }, + "children": [], + "id": 13, + "name": "InlineAssembly", + "src": "576:2619:0" + }, + { + "attributes": { + "functionReturnParameters": 9 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11, + "type": "bytes memory", + "value": "tempBytes" + }, + "id": 14, + "name": "Identifier", + "src": "3212:9:0" + } + ], + "id": 15, + "name": "Return", + "src": "3205:16:0" + } + ], + "id": 16, + "name": "Block", + "src": "533:2695:0" + } + ], + "id": 17, + "name": "FunctionDefinition", + "src": "393:2835:0" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "concatStorage", + "overrides": null, + "scope": 333, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_preBytes", + "overrides": null, + "scope": 26, + "stateVariable": false, + "storageLocation": "storage", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 18, + "name": "ElementaryTypeName", + "src": "3257:5:0" + } + ], + "id": 19, + "name": "VariableDeclaration", + "src": "3257:23:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_postBytes", + "overrides": null, + "scope": 26, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 20, + "name": "ElementaryTypeName", + "src": "3282:5:0" + } + ], + "id": 21, + "name": "VariableDeclaration", + "src": "3282:23:0" + } + ], + "id": 22, + "name": "ParameterList", + "src": "3256:50:0" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 23, + "name": "ParameterList", + "src": "3316:0:0" + }, + { + "children": [ + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 21, + "isOffset": false, + "isSlot": false, + "src": "4155:10:0", + "valueSize": 1 + }, + { + "declaration": 21, + "isOffset": false, + "isSlot": false, + "src": "5221:10:0", + "valueSize": 1 + }, + { + "declaration": 21, + "isOffset": false, + "isSlot": false, + "src": "6753:10:0", + "valueSize": 1 + }, + { + "declaration": 21, + "isOffset": false, + "isSlot": false, + "src": "6804:10:0", + "valueSize": 1 + }, + { + "declaration": 21, + "isOffset": false, + "isSlot": false, + "src": "8237:10:0", + "valueSize": 1 + }, + { + "declaration": 21, + "isOffset": false, + "isSlot": false, + "src": "8288:10:0", + "valueSize": 1 + }, + { + "declaration": 19, + "isOffset": false, + "isSlot": true, + "src": "3565:14:0", + "valueSize": 1 + }, + { + "declaration": 19, + "isOffset": false, + "isSlot": true, + "src": "4803:14:0", + "valueSize": 1 + }, + { + "declaration": 19, + "isOffset": false, + "isSlot": true, + "src": "5953:14:0", + "valueSize": 1 + }, + { + "declaration": 19, + "isOffset": false, + "isSlot": true, + "src": "6094:14:0", + "valueSize": 1 + }, + { + "declaration": 19, + "isOffset": false, + "isSlot": true, + "src": "7697:14:0", + "valueSize": 1 + }, + { + "declaration": 19, + "isOffset": false, + "isSlot": true, + "src": "7910:14:0", + "valueSize": 1 + } + ], + "operations": "{\n let fslot := sload(_preBytes_slot)\n let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2)\n let mlength := mload(_postBytes)\n let newlength := add(slength, mlength)\n switch add(lt(slength, 32), lt(newlength, 32))\n case 2 {\n sstore(_preBytes_slot, add(fslot, add(mul(div(mload(add(_postBytes, 0x20)), exp(0x100, sub(32, mlength))), exp(0x100, sub(32, newlength))), mul(mlength, 2))))\n }\n case 1 {\n mstore(0x0, _preBytes_slot)\n let sc := add(keccak256(0x0, 0x20), div(slength, 32))\n sstore(_preBytes_slot, add(mul(newlength, 2), 1))\n let submod := sub(32, slength)\n let mc := add(_postBytes, submod)\n let end := add(_postBytes, mlength)\n let mask := sub(exp(0x100, submod), 1)\n sstore(sc, add(and(fslot, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00), and(mload(mc), mask)))\n for {\n mc := add(mc, 0x20)\n sc := add(sc, 1)\n }\n lt(mc, end)\n {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n }\n { sstore(sc, mload(mc)) }\n mask := exp(0x100, sub(mc, end))\n sstore(sc, mul(div(mload(mc), mask), mask))\n }\n default {\n mstore(0x0, _preBytes_slot)\n let sc := add(keccak256(0x0, 0x20), div(slength, 32))\n sstore(_preBytes_slot, add(mul(newlength, 2), 1))\n let slengthmod := mod(slength, 32)\n let mlengthmod := mod(mlength, 32)\n let submod := sub(32, slengthmod)\n let mc := add(_postBytes, submod)\n let end := add(_postBytes, mlength)\n let mask := sub(exp(0x100, submod), 1)\n sstore(sc, add(sload(sc), and(mload(mc), mask)))\n for {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n }\n lt(mc, end)\n {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n }\n { sstore(sc, mload(mc)) }\n mask := exp(0x100, sub(mc, end))\n sstore(sc, mul(div(mload(mc), mask), mask))\n }\n}" + }, + "children": [], + "id": 24, + "name": "InlineAssembly", + "src": "3326:5527:0" + } + ], + "id": 25, + "name": "Block", + "src": "3316:5543:0" + } + ], + "id": 26, + "name": "FunctionDefinition", + "src": "3234:5625:0" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "slice", + "overrides": null, + "scope": 333, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_bytes", + "overrides": null, + "scope": 55, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 27, + "name": "ElementaryTypeName", + "src": "8889:5:0" + } + ], + "id": 28, + "name": "VariableDeclaration", + "src": "8889:19:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_start", + "overrides": null, + "scope": 55, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 29, + "name": "ElementaryTypeName", + "src": "8918:7:0" + } + ], + "id": 30, + "name": "VariableDeclaration", + "src": "8918:14:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_length", + "overrides": null, + "scope": 55, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 31, + "name": "ElementaryTypeName", + "src": "8942:7:0" + } + ], + "id": 32, + "name": "VariableDeclaration", + "src": "8942:15:0" + } + ], + "id": 33, + "name": "ParameterList", + "src": "8879:84:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 55, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 34, + "name": "ElementaryTypeName", + "src": "8999:5:0" + } + ], + "id": 35, + "name": "VariableDeclaration", + "src": "8999:12:0" + } + ], + "id": 36, + "name": "ParameterList", + "src": "8998:14:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 37, + "name": "Identifier", + "src": "9027:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28, + "type": "bytes memory", + "value": "_bytes" + }, + "id": 38, + "name": "Identifier", + "src": "9035:6:0" + } + ], + "id": 39, + "name": "MemberAccess", + "src": "9035:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 30, + "type": "uint256", + "value": "_start" + }, + "id": 40, + "name": "Identifier", + "src": "9053:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 32, + "type": "uint256", + "value": "_length" + }, + "id": 41, + "name": "Identifier", + "src": "9062:7:0" + } + ], + "id": 42, + "name": "BinaryOperation", + "src": "9053:16:0" + } + ], + "id": 43, + "name": "TupleExpression", + "src": "9052:18:0" + } + ], + "id": 44, + "name": "BinaryOperation", + "src": "9035:35:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "52656164206f7574206f6620626f756e6473", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Read out of bounds\"", + "value": "Read out of bounds" + }, + "id": 45, + "name": "Literal", + "src": "9072:20:0" + } + ], + "id": 46, + "name": "FunctionCall", + "src": "9027:66:0" + } + ], + "id": 47, + "name": "ExpressionStatement", + "src": "9027:66:0" + }, + { + "attributes": { + "assignments": [49], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "tempBytes", + "overrides": null, + "scope": 54, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 48, + "name": "ElementaryTypeName", + "src": "9104:5:0" + } + ], + "id": 49, + "name": "VariableDeclaration", + "src": "9104:22:0" + } + ], + "id": 50, + "name": "VariableDeclarationStatement", + "src": "9104:22:0" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 28, + "isOffset": false, + "isSlot": false, + "src": "10603:6:0", + "valueSize": 1 + }, + { + "declaration": 32, + "isOffset": false, + "isSlot": false, + "src": "10410:7:0", + "valueSize": 1 + }, + { + "declaration": 32, + "isOffset": false, + "isSlot": false, + "src": "10889:7:0", + "valueSize": 1 + }, + { + "declaration": 32, + "isOffset": false, + "isSlot": false, + "src": "9174:7:0", + "valueSize": 1 + }, + { + "declaration": 32, + "isOffset": false, + "isSlot": false, + "src": "9987:7:0", + "valueSize": 1 + }, + { + "declaration": 30, + "isOffset": false, + "isSlot": false, + "src": "10654:6:0", + "valueSize": 1 + }, + { + "declaration": 49, + "isOffset": false, + "isSlot": false, + "src": "10322:9:0", + "valueSize": 1 + }, + { + "declaration": 49, + "isOffset": false, + "isSlot": false, + "src": "10878:9:0", + "valueSize": 1 + }, + { + "declaration": 49, + "isOffset": false, + "isSlot": false, + "src": "11212:9:0", + "valueSize": 1 + }, + { + "declaration": 49, + "isOffset": false, + "isSlot": false, + "src": "11271:9:0", + "valueSize": 1 + }, + { + "declaration": 49, + "isOffset": false, + "isSlot": false, + "src": "9350:9:0", + "valueSize": 1 + } + ], + "operations": "{\n switch iszero(_length)\n case 0 {\n tempBytes := mload(0x40)\n let lengthmod := and(_length, 31)\n let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod)))\n let end := add(mc, _length)\n for {\n let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start)\n }\n lt(mc, end)\n {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n }\n { mstore(mc, mload(cc)) }\n mstore(tempBytes, _length)\n mstore(0x40, and(add(mc, 31), not(31)))\n }\n default {\n tempBytes := mload(0x40)\n mstore(0x40, add(tempBytes, 0x20))\n }\n}" + }, + "children": [], + "id": 51, + "name": "InlineAssembly", + "src": "9137:2175:0" + }, + { + "attributes": { + "functionReturnParameters": 36 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 49, + "type": "bytes memory", + "value": "tempBytes" + }, + "id": 52, + "name": "Identifier", + "src": "11329:9:0" + } + ], + "id": 53, + "name": "Return", + "src": "11322:16:0" + } + ], + "id": 54, + "name": "Block", + "src": "9017:2328:0" + } + ], + "id": 55, + "name": "FunctionDefinition", + "src": "8865:2480:0" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "toAddress", + "overrides": null, + "scope": 333, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_bytes", + "overrides": null, + "scope": 82, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 56, + "name": "ElementaryTypeName", + "src": "11370:5:0" + } + ], + "id": 57, + "name": "VariableDeclaration", + "src": "11370:19:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_start", + "overrides": null, + "scope": 82, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 58, + "name": "ElementaryTypeName", + "src": "11391:7:0" + } + ], + "id": 59, + "name": "VariableDeclaration", + "src": "11391:14:0" + } + ], + "id": 60, + "name": "ParameterList", + "src": "11369:37:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 82, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 61, + "name": "ElementaryTypeName", + "src": "11430:7:0" + } + ], + "id": 62, + "name": "VariableDeclaration", + "src": "11430:7:0" + } + ], + "id": 63, + "name": "ParameterList", + "src": "11429:9:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 64, + "name": "Identifier", + "src": "11449:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 57, + "type": "bytes memory", + "value": "_bytes" + }, + "id": 65, + "name": "Identifier", + "src": "11457:6:0" + } + ], + "id": 66, + "name": "MemberAccess", + "src": "11457:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 59, + "type": "uint256", + "value": "_start" + }, + "id": 67, + "name": "Identifier", + "src": "11475:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3230", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 20", + "value": "20" + }, + "id": 68, + "name": "Literal", + "src": "11484:2:0" + } + ], + "id": 69, + "name": "BinaryOperation", + "src": "11475:11:0" + } + ], + "id": 70, + "name": "TupleExpression", + "src": "11474:13:0" + } + ], + "id": 71, + "name": "BinaryOperation", + "src": "11457:30:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "52656164206f7574206f6620626f756e6473", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Read out of bounds\"", + "value": "Read out of bounds" + }, + "id": 72, + "name": "Literal", + "src": "11489:20:0" + } + ], + "id": 73, + "name": "FunctionCall", + "src": "11449:61:0" + } + ], + "id": 74, + "name": "ExpressionStatement", + "src": "11449:61:0" + }, + { + "attributes": { + "assignments": [76], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "tempAddress", + "overrides": null, + "scope": 81, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 75, + "name": "ElementaryTypeName", + "src": "11520:7:0" + } + ], + "id": 76, + "name": "VariableDeclaration", + "src": "11520:19:0" + } + ], + "id": 77, + "name": "VariableDeclarationStatement", + "src": "11520:19:0" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 57, + "isOffset": false, + "isSlot": false, + "src": "11606:6:0", + "valueSize": 1 + }, + { + "declaration": 59, + "isOffset": false, + "isSlot": false, + "src": "11621:6:0", + "valueSize": 1 + }, + { + "declaration": 76, + "isOffset": false, + "isSlot": false, + "src": "11573:11:0", + "valueSize": 1 + } + ], + "operations": "{\n tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000)\n}" + }, + "children": [], + "id": 78, + "name": "InlineAssembly", + "src": "11550:119:0" + }, + { + "attributes": { + "functionReturnParameters": 63 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 76, + "type": "address", + "value": "tempAddress" + }, + "id": 79, + "name": "Identifier", + "src": "11686:11:0" + } + ], + "id": 80, + "name": "Return", + "src": "11679:18:0" + } + ], + "id": 81, + "name": "Block", + "src": "11439:265:0" + } + ], + "id": 82, + "name": "FunctionDefinition", + "src": "11351:353:0" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "toUint8", + "overrides": null, + "scope": 333, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_bytes", + "overrides": null, + "scope": 109, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 83, + "name": "ElementaryTypeName", + "src": "11727:5:0" + } + ], + "id": 84, + "name": "VariableDeclaration", + "src": "11727:19:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_start", + "overrides": null, + "scope": 109, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 85, + "name": "ElementaryTypeName", + "src": "11748:7:0" + } + ], + "id": 86, + "name": "VariableDeclaration", + "src": "11748:14:0" + } + ], + "id": 87, + "name": "ParameterList", + "src": "11726:37:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 109, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 88, + "name": "ElementaryTypeName", + "src": "11787:5:0" + } + ], + "id": 89, + "name": "VariableDeclaration", + "src": "11787:5:0" + } + ], + "id": 90, + "name": "ParameterList", + "src": "11786:7:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 91, + "name": "Identifier", + "src": "11804:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 84, + "type": "bytes memory", + "value": "_bytes" + }, + "id": 92, + "name": "Identifier", + "src": "11812:6:0" + } + ], + "id": 93, + "name": "MemberAccess", + "src": "11812:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 86, + "type": "uint256", + "value": "_start" + }, + "id": 94, + "name": "Identifier", + "src": "11830:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 95, + "name": "Literal", + "src": "11839:1:0" + } + ], + "id": 96, + "name": "BinaryOperation", + "src": "11830:10:0" + } + ], + "id": 97, + "name": "TupleExpression", + "src": "11829:12:0" + } + ], + "id": 98, + "name": "BinaryOperation", + "src": "11812:29:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "52656164206f7574206f6620626f756e6473", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Read out of bounds\"", + "value": "Read out of bounds" + }, + "id": 99, + "name": "Literal", + "src": "11843:20:0" + } + ], + "id": 100, + "name": "FunctionCall", + "src": "11804:60:0" + } + ], + "id": 101, + "name": "ExpressionStatement", + "src": "11804:60:0" + }, + { + "attributes": { + "assignments": [103], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "tempUint", + "overrides": null, + "scope": 108, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 102, + "name": "ElementaryTypeName", + "src": "11874:5:0" + } + ], + "id": 103, + "name": "VariableDeclaration", + "src": "11874:14:0" + } + ], + "id": 104, + "name": "VariableDeclarationStatement", + "src": "11874:14:0" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 84, + "isOffset": false, + "isSlot": false, + "src": "11948:6:0", + "valueSize": 1 + }, + { + "declaration": 86, + "isOffset": false, + "isSlot": false, + "src": "11962:6:0", + "valueSize": 1 + }, + { + "declaration": 103, + "isOffset": false, + "isSlot": false, + "src": "11922:8:0", + "valueSize": 1 + } + ], + "operations": "{\n tempUint := mload(add(add(_bytes, 0x1), _start))\n}" + }, + "children": [], + "id": 105, + "name": "InlineAssembly", + "src": "11899:81:0" + }, + { + "attributes": { + "functionReturnParameters": 90 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 103, + "type": "uint8", + "value": "tempUint" + }, + "id": 106, + "name": "Identifier", + "src": "11997:8:0" + } + ], + "id": 107, + "name": "Return", + "src": "11990:15:0" + } + ], + "id": 108, + "name": "Block", + "src": "11794:218:0" + } + ], + "id": 109, + "name": "FunctionDefinition", + "src": "11710:302:0" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "toUint16", + "overrides": null, + "scope": 333, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_bytes", + "overrides": null, + "scope": 136, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 110, + "name": "ElementaryTypeName", + "src": "12036:5:0" + } + ], + "id": 111, + "name": "VariableDeclaration", + "src": "12036:19:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_start", + "overrides": null, + "scope": 136, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 112, + "name": "ElementaryTypeName", + "src": "12057:7:0" + } + ], + "id": 113, + "name": "VariableDeclaration", + "src": "12057:14:0" + } + ], + "id": 114, + "name": "ParameterList", + "src": "12035:37:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 136, + "stateVariable": false, + "storageLocation": "default", + "type": "uint16", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint16", + "type": "uint16" + }, + "id": 115, + "name": "ElementaryTypeName", + "src": "12096:6:0" + } + ], + "id": 116, + "name": "VariableDeclaration", + "src": "12096:6:0" + } + ], + "id": 117, + "name": "ParameterList", + "src": "12095:8:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 118, + "name": "Identifier", + "src": "12114:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 111, + "type": "bytes memory", + "value": "_bytes" + }, + "id": 119, + "name": "Identifier", + "src": "12122:6:0" + } + ], + "id": 120, + "name": "MemberAccess", + "src": "12122:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 113, + "type": "uint256", + "value": "_start" + }, + "id": 121, + "name": "Identifier", + "src": "12140:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "32", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 2", + "value": "2" + }, + "id": 122, + "name": "Literal", + "src": "12149:1:0" + } + ], + "id": 123, + "name": "BinaryOperation", + "src": "12140:10:0" + } + ], + "id": 124, + "name": "TupleExpression", + "src": "12139:12:0" + } + ], + "id": 125, + "name": "BinaryOperation", + "src": "12122:29:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "52656164206f7574206f6620626f756e6473", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Read out of bounds\"", + "value": "Read out of bounds" + }, + "id": 126, + "name": "Literal", + "src": "12153:20:0" + } + ], + "id": 127, + "name": "FunctionCall", + "src": "12114:60:0" + } + ], + "id": 128, + "name": "ExpressionStatement", + "src": "12114:60:0" + }, + { + "attributes": { + "assignments": [130], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "tempUint", + "overrides": null, + "scope": 135, + "stateVariable": false, + "storageLocation": "default", + "type": "uint16", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint16", + "type": "uint16" + }, + "id": 129, + "name": "ElementaryTypeName", + "src": "12184:6:0" + } + ], + "id": 130, + "name": "VariableDeclaration", + "src": "12184:15:0" + } + ], + "id": 131, + "name": "VariableDeclarationStatement", + "src": "12184:15:0" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 111, + "isOffset": false, + "isSlot": false, + "src": "12259:6:0", + "valueSize": 1 + }, + { + "declaration": 113, + "isOffset": false, + "isSlot": false, + "src": "12273:6:0", + "valueSize": 1 + }, + { + "declaration": 130, + "isOffset": false, + "isSlot": false, + "src": "12233:8:0", + "valueSize": 1 + } + ], + "operations": "{\n tempUint := mload(add(add(_bytes, 0x2), _start))\n}" + }, + "children": [], + "id": 132, + "name": "InlineAssembly", + "src": "12210:81:0" + }, + { + "attributes": { + "functionReturnParameters": 117 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 130, + "type": "uint16", + "value": "tempUint" + }, + "id": 133, + "name": "Identifier", + "src": "12308:8:0" + } + ], + "id": 134, + "name": "Return", + "src": "12301:15:0" + } + ], + "id": 135, + "name": "Block", + "src": "12104:219:0" + } + ], + "id": 136, + "name": "FunctionDefinition", + "src": "12018:305:0" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "toUint32", + "overrides": null, + "scope": 333, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_bytes", + "overrides": null, + "scope": 163, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 137, + "name": "ElementaryTypeName", + "src": "12347:5:0" + } + ], + "id": 138, + "name": "VariableDeclaration", + "src": "12347:19:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_start", + "overrides": null, + "scope": 163, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 139, + "name": "ElementaryTypeName", + "src": "12368:7:0" + } + ], + "id": 140, + "name": "VariableDeclaration", + "src": "12368:14:0" + } + ], + "id": 141, + "name": "ParameterList", + "src": "12346:37:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 163, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 142, + "name": "ElementaryTypeName", + "src": "12407:6:0" + } + ], + "id": 143, + "name": "VariableDeclaration", + "src": "12407:6:0" + } + ], + "id": 144, + "name": "ParameterList", + "src": "12406:8:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 145, + "name": "Identifier", + "src": "12425:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 138, + "type": "bytes memory", + "value": "_bytes" + }, + "id": 146, + "name": "Identifier", + "src": "12433:6:0" + } + ], + "id": 147, + "name": "MemberAccess", + "src": "12433:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 140, + "type": "uint256", + "value": "_start" + }, + "id": 148, + "name": "Identifier", + "src": "12451:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "34", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 4", + "value": "4" + }, + "id": 149, + "name": "Literal", + "src": "12460:1:0" + } + ], + "id": 150, + "name": "BinaryOperation", + "src": "12451:10:0" + } + ], + "id": 151, + "name": "TupleExpression", + "src": "12450:12:0" + } + ], + "id": 152, + "name": "BinaryOperation", + "src": "12433:29:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "52656164206f7574206f6620626f756e6473", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Read out of bounds\"", + "value": "Read out of bounds" + }, + "id": 153, + "name": "Literal", + "src": "12464:20:0" + } + ], + "id": 154, + "name": "FunctionCall", + "src": "12425:60:0" + } + ], + "id": 155, + "name": "ExpressionStatement", + "src": "12425:60:0" + }, + { + "attributes": { + "assignments": [157], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "tempUint", + "overrides": null, + "scope": 162, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 156, + "name": "ElementaryTypeName", + "src": "12495:6:0" + } + ], + "id": 157, + "name": "VariableDeclaration", + "src": "12495:15:0" + } + ], + "id": 158, + "name": "VariableDeclarationStatement", + "src": "12495:15:0" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 138, + "isOffset": false, + "isSlot": false, + "src": "12570:6:0", + "valueSize": 1 + }, + { + "declaration": 140, + "isOffset": false, + "isSlot": false, + "src": "12584:6:0", + "valueSize": 1 + }, + { + "declaration": 157, + "isOffset": false, + "isSlot": false, + "src": "12544:8:0", + "valueSize": 1 + } + ], + "operations": "{\n tempUint := mload(add(add(_bytes, 0x4), _start))\n}" + }, + "children": [], + "id": 159, + "name": "InlineAssembly", + "src": "12521:81:0" + }, + { + "attributes": { + "functionReturnParameters": 144 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 157, + "type": "uint32", + "value": "tempUint" + }, + "id": 160, + "name": "Identifier", + "src": "12619:8:0" + } + ], + "id": 161, + "name": "Return", + "src": "12612:15:0" + } + ], + "id": 162, + "name": "Block", + "src": "12415:219:0" + } + ], + "id": 163, + "name": "FunctionDefinition", + "src": "12329:305:0" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "toUint64", + "overrides": null, + "scope": 333, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_bytes", + "overrides": null, + "scope": 190, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 164, + "name": "ElementaryTypeName", + "src": "12658:5:0" + } + ], + "id": 165, + "name": "VariableDeclaration", + "src": "12658:19:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_start", + "overrides": null, + "scope": 190, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 166, + "name": "ElementaryTypeName", + "src": "12679:7:0" + } + ], + "id": 167, + "name": "VariableDeclaration", + "src": "12679:14:0" + } + ], + "id": 168, + "name": "ParameterList", + "src": "12657:37:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 190, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 169, + "name": "ElementaryTypeName", + "src": "12718:6:0" + } + ], + "id": 170, + "name": "VariableDeclaration", + "src": "12718:6:0" + } + ], + "id": 171, + "name": "ParameterList", + "src": "12717:8:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 172, + "name": "Identifier", + "src": "12736:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 165, + "type": "bytes memory", + "value": "_bytes" + }, + "id": 173, + "name": "Identifier", + "src": "12744:6:0" + } + ], + "id": 174, + "name": "MemberAccess", + "src": "12744:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 167, + "type": "uint256", + "value": "_start" + }, + "id": 175, + "name": "Identifier", + "src": "12762:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "38", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 8", + "value": "8" + }, + "id": 176, + "name": "Literal", + "src": "12771:1:0" + } + ], + "id": 177, + "name": "BinaryOperation", + "src": "12762:10:0" + } + ], + "id": 178, + "name": "TupleExpression", + "src": "12761:12:0" + } + ], + "id": 179, + "name": "BinaryOperation", + "src": "12744:29:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "52656164206f7574206f6620626f756e6473", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Read out of bounds\"", + "value": "Read out of bounds" + }, + "id": 180, + "name": "Literal", + "src": "12775:20:0" + } + ], + "id": 181, + "name": "FunctionCall", + "src": "12736:60:0" + } + ], + "id": 182, + "name": "ExpressionStatement", + "src": "12736:60:0" + }, + { + "attributes": { + "assignments": [184], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "tempUint", + "overrides": null, + "scope": 189, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 183, + "name": "ElementaryTypeName", + "src": "12806:6:0" + } + ], + "id": 184, + "name": "VariableDeclaration", + "src": "12806:15:0" + } + ], + "id": 185, + "name": "VariableDeclarationStatement", + "src": "12806:15:0" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 165, + "isOffset": false, + "isSlot": false, + "src": "12881:6:0", + "valueSize": 1 + }, + { + "declaration": 167, + "isOffset": false, + "isSlot": false, + "src": "12895:6:0", + "valueSize": 1 + }, + { + "declaration": 184, + "isOffset": false, + "isSlot": false, + "src": "12855:8:0", + "valueSize": 1 + } + ], + "operations": "{\n tempUint := mload(add(add(_bytes, 0x8), _start))\n}" + }, + "children": [], + "id": 186, + "name": "InlineAssembly", + "src": "12832:81:0" + }, + { + "attributes": { + "functionReturnParameters": 171 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 184, + "type": "uint64", + "value": "tempUint" + }, + "id": 187, + "name": "Identifier", + "src": "12930:8:0" + } + ], + "id": 188, + "name": "Return", + "src": "12923:15:0" + } + ], + "id": 189, + "name": "Block", + "src": "12726:219:0" + } + ], + "id": 190, + "name": "FunctionDefinition", + "src": "12640:305:0" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "toUint96", + "overrides": null, + "scope": 333, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_bytes", + "overrides": null, + "scope": 217, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 191, + "name": "ElementaryTypeName", + "src": "12969:5:0" + } + ], + "id": 192, + "name": "VariableDeclaration", + "src": "12969:19:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_start", + "overrides": null, + "scope": 217, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 193, + "name": "ElementaryTypeName", + "src": "12990:7:0" + } + ], + "id": 194, + "name": "VariableDeclaration", + "src": "12990:14:0" + } + ], + "id": 195, + "name": "ParameterList", + "src": "12968:37:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 217, + "stateVariable": false, + "storageLocation": "default", + "type": "uint96", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint96", + "type": "uint96" + }, + "id": 196, + "name": "ElementaryTypeName", + "src": "13029:6:0" + } + ], + "id": 197, + "name": "VariableDeclaration", + "src": "13029:6:0" + } + ], + "id": 198, + "name": "ParameterList", + "src": "13028:8:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 199, + "name": "Identifier", + "src": "13047:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 192, + "type": "bytes memory", + "value": "_bytes" + }, + "id": 200, + "name": "Identifier", + "src": "13055:6:0" + } + ], + "id": 201, + "name": "MemberAccess", + "src": "13055:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 194, + "type": "uint256", + "value": "_start" + }, + "id": 202, + "name": "Identifier", + "src": "13073:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3132", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 12", + "value": "12" + }, + "id": 203, + "name": "Literal", + "src": "13082:2:0" + } + ], + "id": 204, + "name": "BinaryOperation", + "src": "13073:11:0" + } + ], + "id": 205, + "name": "TupleExpression", + "src": "13072:13:0" + } + ], + "id": 206, + "name": "BinaryOperation", + "src": "13055:30:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "52656164206f7574206f6620626f756e6473", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Read out of bounds\"", + "value": "Read out of bounds" + }, + "id": 207, + "name": "Literal", + "src": "13087:20:0" + } + ], + "id": 208, + "name": "FunctionCall", + "src": "13047:61:0" + } + ], + "id": 209, + "name": "ExpressionStatement", + "src": "13047:61:0" + }, + { + "attributes": { + "assignments": [211], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "tempUint", + "overrides": null, + "scope": 216, + "stateVariable": false, + "storageLocation": "default", + "type": "uint96", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint96", + "type": "uint96" + }, + "id": 210, + "name": "ElementaryTypeName", + "src": "13118:6:0" + } + ], + "id": 211, + "name": "VariableDeclaration", + "src": "13118:15:0" + } + ], + "id": 212, + "name": "VariableDeclarationStatement", + "src": "13118:15:0" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 192, + "isOffset": false, + "isSlot": false, + "src": "13193:6:0", + "valueSize": 1 + }, + { + "declaration": 194, + "isOffset": false, + "isSlot": false, + "src": "13207:6:0", + "valueSize": 1 + }, + { + "declaration": 211, + "isOffset": false, + "isSlot": false, + "src": "13167:8:0", + "valueSize": 1 + } + ], + "operations": "{\n tempUint := mload(add(add(_bytes, 0xc), _start))\n}" + }, + "children": [], + "id": 213, + "name": "InlineAssembly", + "src": "13144:81:0" + }, + { + "attributes": { + "functionReturnParameters": 198 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 211, + "type": "uint96", + "value": "tempUint" + }, + "id": 214, + "name": "Identifier", + "src": "13242:8:0" + } + ], + "id": 215, + "name": "Return", + "src": "13235:15:0" + } + ], + "id": 216, + "name": "Block", + "src": "13037:220:0" + } + ], + "id": 217, + "name": "FunctionDefinition", + "src": "12951:306:0" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "toUint128", + "overrides": null, + "scope": 333, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_bytes", + "overrides": null, + "scope": 244, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 218, + "name": "ElementaryTypeName", + "src": "13282:5:0" + } + ], + "id": 219, + "name": "VariableDeclaration", + "src": "13282:19:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_start", + "overrides": null, + "scope": 244, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 220, + "name": "ElementaryTypeName", + "src": "13303:7:0" + } + ], + "id": 221, + "name": "VariableDeclaration", + "src": "13303:14:0" + } + ], + "id": 222, + "name": "ParameterList", + "src": "13281:37:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 244, + "stateVariable": false, + "storageLocation": "default", + "type": "uint128", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint128", + "type": "uint128" + }, + "id": 223, + "name": "ElementaryTypeName", + "src": "13342:7:0" + } + ], + "id": 224, + "name": "VariableDeclaration", + "src": "13342:7:0" + } + ], + "id": 225, + "name": "ParameterList", + "src": "13341:9:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 226, + "name": "Identifier", + "src": "13361:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 219, + "type": "bytes memory", + "value": "_bytes" + }, + "id": 227, + "name": "Identifier", + "src": "13369:6:0" + } + ], + "id": 228, + "name": "MemberAccess", + "src": "13369:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 221, + "type": "uint256", + "value": "_start" + }, + "id": 229, + "name": "Identifier", + "src": "13387:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3136", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 16", + "value": "16" + }, + "id": 230, + "name": "Literal", + "src": "13396:2:0" + } + ], + "id": 231, + "name": "BinaryOperation", + "src": "13387:11:0" + } + ], + "id": 232, + "name": "TupleExpression", + "src": "13386:13:0" + } + ], + "id": 233, + "name": "BinaryOperation", + "src": "13369:30:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "52656164206f7574206f6620626f756e6473", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Read out of bounds\"", + "value": "Read out of bounds" + }, + "id": 234, + "name": "Literal", + "src": "13401:20:0" + } + ], + "id": 235, + "name": "FunctionCall", + "src": "13361:61:0" + } + ], + "id": 236, + "name": "ExpressionStatement", + "src": "13361:61:0" + }, + { + "attributes": { + "assignments": [238], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "tempUint", + "overrides": null, + "scope": 243, + "stateVariable": false, + "storageLocation": "default", + "type": "uint128", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint128", + "type": "uint128" + }, + "id": 237, + "name": "ElementaryTypeName", + "src": "13432:7:0" + } + ], + "id": 238, + "name": "VariableDeclaration", + "src": "13432:16:0" + } + ], + "id": 239, + "name": "VariableDeclarationStatement", + "src": "13432:16:0" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 219, + "isOffset": false, + "isSlot": false, + "src": "13508:6:0", + "valueSize": 1 + }, + { + "declaration": 221, + "isOffset": false, + "isSlot": false, + "src": "13523:6:0", + "valueSize": 1 + }, + { + "declaration": 238, + "isOffset": false, + "isSlot": false, + "src": "13482:8:0", + "valueSize": 1 + } + ], + "operations": "{\n tempUint := mload(add(add(_bytes, 0x10), _start))\n}" + }, + "children": [], + "id": 240, + "name": "InlineAssembly", + "src": "13459:82:0" + }, + { + "attributes": { + "functionReturnParameters": 225 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 238, + "type": "uint128", + "value": "tempUint" + }, + "id": 241, + "name": "Identifier", + "src": "13558:8:0" + } + ], + "id": 242, + "name": "Return", + "src": "13551:15:0" + } + ], + "id": 243, + "name": "Block", + "src": "13351:222:0" + } + ], + "id": 244, + "name": "FunctionDefinition", + "src": "13263:310:0" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "toUint256", + "overrides": null, + "scope": 333, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_bytes", + "overrides": null, + "scope": 271, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 245, + "name": "ElementaryTypeName", + "src": "13598:5:0" + } + ], + "id": 246, + "name": "VariableDeclaration", + "src": "13598:19:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_start", + "overrides": null, + "scope": 271, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 247, + "name": "ElementaryTypeName", + "src": "13619:7:0" + } + ], + "id": 248, + "name": "VariableDeclaration", + "src": "13619:14:0" + } + ], + "id": 249, + "name": "ParameterList", + "src": "13597:37:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 271, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 250, + "name": "ElementaryTypeName", + "src": "13658:7:0" + } + ], + "id": 251, + "name": "VariableDeclaration", + "src": "13658:7:0" + } + ], + "id": 252, + "name": "ParameterList", + "src": "13657:9:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 253, + "name": "Identifier", + "src": "13677:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 246, + "type": "bytes memory", + "value": "_bytes" + }, + "id": 254, + "name": "Identifier", + "src": "13685:6:0" + } + ], + "id": 255, + "name": "MemberAccess", + "src": "13685:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 248, + "type": "uint256", + "value": "_start" + }, + "id": 256, + "name": "Identifier", + "src": "13703:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3332", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 32", + "value": "32" + }, + "id": 257, + "name": "Literal", + "src": "13712:2:0" + } + ], + "id": 258, + "name": "BinaryOperation", + "src": "13703:11:0" + } + ], + "id": 259, + "name": "TupleExpression", + "src": "13702:13:0" + } + ], + "id": 260, + "name": "BinaryOperation", + "src": "13685:30:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "52656164206f7574206f6620626f756e6473", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Read out of bounds\"", + "value": "Read out of bounds" + }, + "id": 261, + "name": "Literal", + "src": "13717:20:0" + } + ], + "id": 262, + "name": "FunctionCall", + "src": "13677:61:0" + } + ], + "id": 263, + "name": "ExpressionStatement", + "src": "13677:61:0" + }, + { + "attributes": { + "assignments": [265], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "tempUint", + "overrides": null, + "scope": 270, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 264, + "name": "ElementaryTypeName", + "src": "13748:7:0" + } + ], + "id": 265, + "name": "VariableDeclaration", + "src": "13748:16:0" + } + ], + "id": 266, + "name": "VariableDeclarationStatement", + "src": "13748:16:0" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 246, + "isOffset": false, + "isSlot": false, + "src": "13824:6:0", + "valueSize": 1 + }, + { + "declaration": 248, + "isOffset": false, + "isSlot": false, + "src": "13839:6:0", + "valueSize": 1 + }, + { + "declaration": 265, + "isOffset": false, + "isSlot": false, + "src": "13798:8:0", + "valueSize": 1 + } + ], + "operations": "{\n tempUint := mload(add(add(_bytes, 0x20), _start))\n}" + }, + "children": [], + "id": 267, + "name": "InlineAssembly", + "src": "13775:82:0" + }, + { + "attributes": { + "functionReturnParameters": 252 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 265, + "type": "uint256", + "value": "tempUint" + }, + "id": 268, + "name": "Identifier", + "src": "13874:8:0" + } + ], + "id": 269, + "name": "Return", + "src": "13867:15:0" + } + ], + "id": 270, + "name": "Block", + "src": "13667:222:0" + } + ], + "id": 271, + "name": "FunctionDefinition", + "src": "13579:310:0" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "toBytes32", + "overrides": null, + "scope": 333, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_bytes", + "overrides": null, + "scope": 298, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 272, + "name": "ElementaryTypeName", + "src": "13914:5:0" + } + ], + "id": 273, + "name": "VariableDeclaration", + "src": "13914:19:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_start", + "overrides": null, + "scope": 298, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 274, + "name": "ElementaryTypeName", + "src": "13935:7:0" + } + ], + "id": 275, + "name": "VariableDeclaration", + "src": "13935:14:0" + } + ], + "id": 276, + "name": "ParameterList", + "src": "13913:37:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 298, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 277, + "name": "ElementaryTypeName", + "src": "13974:7:0" + } + ], + "id": 278, + "name": "VariableDeclaration", + "src": "13974:7:0" + } + ], + "id": 279, + "name": "ParameterList", + "src": "13973:9:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5cbab548b65f825a63fb88e65bb91138d4018af1d080a2c8d18624b8080ae1c9", + "typeString": "literal_string \"Read out of bounds\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 280, + "name": "Identifier", + "src": "13993:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 273, + "type": "bytes memory", + "value": "_bytes" + }, + "id": 281, + "name": "Identifier", + "src": "14001:6:0" + } + ], + "id": 282, + "name": "MemberAccess", + "src": "14001:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 275, + "type": "uint256", + "value": "_start" + }, + "id": 283, + "name": "Identifier", + "src": "14019:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3332", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 32", + "value": "32" + }, + "id": 284, + "name": "Literal", + "src": "14028:2:0" + } + ], + "id": 285, + "name": "BinaryOperation", + "src": "14019:11:0" + } + ], + "id": 286, + "name": "TupleExpression", + "src": "14018:13:0" + } + ], + "id": 287, + "name": "BinaryOperation", + "src": "14001:30:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "52656164206f7574206f6620626f756e6473", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Read out of bounds\"", + "value": "Read out of bounds" + }, + "id": 288, + "name": "Literal", + "src": "14033:20:0" + } + ], + "id": 289, + "name": "FunctionCall", + "src": "13993:61:0" + } + ], + "id": 290, + "name": "ExpressionStatement", + "src": "13993:61:0" + }, + { + "attributes": { + "assignments": [292], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "tempBytes32", + "overrides": null, + "scope": 297, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 291, + "name": "ElementaryTypeName", + "src": "14064:7:0" + } + ], + "id": 292, + "name": "VariableDeclaration", + "src": "14064:19:0" + } + ], + "id": 293, + "name": "VariableDeclarationStatement", + "src": "14064:19:0" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 273, + "isOffset": false, + "isSlot": false, + "src": "14146:6:0", + "valueSize": 1 + }, + { + "declaration": 275, + "isOffset": false, + "isSlot": false, + "src": "14161:6:0", + "valueSize": 1 + }, + { + "declaration": 292, + "isOffset": false, + "isSlot": false, + "src": "14117:11:0", + "valueSize": 1 + } + ], + "operations": "{\n tempBytes32 := mload(add(add(_bytes, 0x20), _start))\n}" + }, + "children": [], + "id": 294, + "name": "InlineAssembly", + "src": "14094:85:0" + }, + { + "attributes": { + "functionReturnParameters": 279 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 292, + "type": "bytes32", + "value": "tempBytes32" + }, + "id": 295, + "name": "Identifier", + "src": "14196:11:0" + } + ], + "id": 296, + "name": "Return", + "src": "14189:18:0" + } + ], + "id": 297, + "name": "Block", + "src": "13983:231:0" + } + ], + "id": 298, + "name": "FunctionDefinition", + "src": "13895:319:0" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "equal", + "overrides": null, + "scope": 333, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_preBytes", + "overrides": null, + "scope": 315, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 299, + "name": "ElementaryTypeName", + "src": "14235:5:0" + } + ], + "id": 300, + "name": "VariableDeclaration", + "src": "14235:22:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_postBytes", + "overrides": null, + "scope": 315, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 301, + "name": "ElementaryTypeName", + "src": "14259:5:0" + } + ], + "id": 302, + "name": "VariableDeclaration", + "src": "14259:23:0" + } + ], + "id": 303, + "name": "ParameterList", + "src": "14234:49:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 315, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 304, + "name": "ElementaryTypeName", + "src": "14307:4:0" + } + ], + "id": 305, + "name": "VariableDeclaration", + "src": "14307:4:0" + } + ], + "id": 306, + "name": "ParameterList", + "src": "14306:6:0" + }, + { + "children": [ + { + "attributes": { + "assignments": [308] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "success", + "overrides": null, + "scope": 314, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 307, + "name": "ElementaryTypeName", + "src": "14323:4:0" + } + ], + "id": 308, + "name": "VariableDeclaration", + "src": "14323:12:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 309, + "name": "Literal", + "src": "14338:4:0" + } + ], + "id": 310, + "name": "VariableDeclarationStatement", + "src": "14323:19:0" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 302, + "isOffset": false, + "isSlot": false, + "src": "14503:10:0", + "valueSize": 1 + }, + { + "declaration": 302, + "isOffset": false, + "isSlot": false, + "src": "14908:10:0", + "valueSize": 1 + }, + { + "declaration": 300, + "isOffset": false, + "isSlot": false, + "src": "14396:9:0", + "valueSize": 1 + }, + { + "declaration": 300, + "isOffset": false, + "isSlot": false, + "src": "14791:9:0", + "valueSize": 1 + }, + { + "declaration": 308, + "isOffset": false, + "isSlot": false, + "src": "15374:7:0", + "valueSize": 1 + }, + { + "declaration": 308, + "isOffset": false, + "isSlot": false, + "src": "15537:7:0", + "valueSize": 1 + } + ], + "operations": "{\n let length := mload(_preBytes)\n switch eq(length, mload(_postBytes))\n case 1 {\n let cb := 1\n let mc := add(_preBytes, 0x20)\n let end := add(mc, length)\n for {\n let cc := add(_postBytes, 0x20)\n }\n eq(add(lt(mc, end), cb), 2)\n {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n }\n {\n if iszero(eq(mload(mc), mload(cc)))\n {\n success := 0\n cb := 0\n }\n }\n }\n default { success := 0 }\n}" + }, + "children": [], + "id": 311, + "name": "InlineAssembly", + "src": "14353:1220:0" + }, + { + "attributes": { + "functionReturnParameters": 306 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 308, + "type": "bool", + "value": "success" + }, + "id": 312, + "name": "Identifier", + "src": "15590:7:0" + } + ], + "id": 313, + "name": "Return", + "src": "15583:14:0" + } + ], + "id": 314, + "name": "Block", + "src": "14313:1291:0" + } + ], + "id": 315, + "name": "FunctionDefinition", + "src": "14220:1384:0" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "equalStorage", + "overrides": null, + "scope": 333, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_preBytes", + "overrides": null, + "scope": 332, + "stateVariable": false, + "storageLocation": "storage", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 316, + "name": "ElementaryTypeName", + "src": "15641:5:0" + } + ], + "id": 317, + "name": "VariableDeclaration", + "src": "15641:23:0" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_postBytes", + "overrides": null, + "scope": 332, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 318, + "name": "ElementaryTypeName", + "src": "15674:5:0" + } + ], + "id": 319, + "name": "VariableDeclaration", + "src": "15674:23:0" + } + ], + "id": 320, + "name": "ParameterList", + "src": "15631:72:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 332, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 321, + "name": "ElementaryTypeName", + "src": "15739:4:0" + } + ], + "id": 322, + "name": "VariableDeclaration", + "src": "15739:4:0" + } + ], + "id": 323, + "name": "ParameterList", + "src": "15738:6:0" + }, + { + "children": [ + { + "attributes": { + "assignments": [325] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "success", + "overrides": null, + "scope": 331, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 324, + "name": "ElementaryTypeName", + "src": "15759:4:0" + } + ], + "id": 325, + "name": "VariableDeclaration", + "src": "15759:12:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 326, + "name": "Literal", + "src": "15774:4:0" + } + ], + "id": 327, + "name": "VariableDeclarationStatement", + "src": "15759:19:0" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 319, + "isOffset": false, + "isSlot": false, + "src": "16084:10:0", + "valueSize": 1 + }, + { + "declaration": 319, + "isOffset": false, + "isSlot": false, + "src": "16769:10:0", + "valueSize": 1 + }, + { + "declaration": 319, + "isOffset": false, + "isSlot": false, + "src": "17435:10:0", + "valueSize": 1 + }, + { + "declaration": 317, + "isOffset": false, + "isSlot": true, + "src": "15872:14:0", + "valueSize": 1 + }, + { + "declaration": 317, + "isOffset": false, + "isSlot": true, + "src": "17325:14:0", + "valueSize": 1 + }, + { + "declaration": 325, + "isOffset": false, + "isSlot": false, + "src": "16858:7:0", + "valueSize": 1 + }, + { + "declaration": 325, + "isOffset": false, + "isSlot": false, + "src": "17946:7:0", + "valueSize": 1 + }, + { + "declaration": 325, + "isOffset": false, + "isSlot": false, + "src": "18173:7:0", + "valueSize": 1 + } + ], + "operations": "{\n let fslot := sload(_preBytes_slot)\n let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2)\n let mlength := mload(_postBytes)\n switch eq(slength, mlength)\n case 1 {\n if iszero(iszero(slength))\n {\n switch lt(slength, 32)\n case 1 {\n fslot := mul(div(fslot, 0x100), 0x100)\n if iszero(eq(fslot, mload(add(_postBytes, 0x20)))) { success := 0 }\n }\n default {\n let cb := 1\n mstore(0x0, _preBytes_slot)\n let sc := keccak256(0x0, 0x20)\n let mc := add(_postBytes, 0x20)\n let end := add(mc, mlength)\n for { }\n eq(add(lt(mc, end), cb), 2)\n {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n }\n {\n if iszero(eq(sload(sc), mload(mc)))\n {\n success := 0\n cb := 0\n }\n }\n }\n }\n }\n default { success := 0 }\n}" + }, + "children": [], + "id": 328, + "name": "InlineAssembly", + "src": "15789:2420:0" + }, + { + "attributes": { + "functionReturnParameters": 323 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 325, + "type": "bool", + "value": "success" + }, + "id": 329, + "name": "Identifier", + "src": "18226:7:0" + } + ], + "id": 330, + "name": "Return", + "src": "18219:14:0" + } + ], + "id": 331, + "name": "Block", + "src": "15749:2491:0" + } + ], + "id": 332, + "name": "FunctionDefinition", + "src": "15610:2630:0" + } + ], + "id": 333, + "name": "ContractDefinition", + "src": "370:17872:0" + } + ], + "id": 334, + "name": "SourceUnit", + "src": "336:17907:0" + }, + "compiler": { + "name": "solc", + "version": "0.6.12+commit.27d51765.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.3.4", + "updatedAt": "2021-04-12T21:53:29.865Z", + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} diff --git a/packages/bridge/contracts/Context.json b/packages/bridge/contracts/Context.json new file mode 100644 index 0000000..40a9d55 --- /dev/null +++ b/packages/bridge/contracts/Context.json @@ -0,0 +1,558 @@ +{ + "contractName": "Context", + "abi": [], + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}", + "bytecode": "0x", + "deployedBytecode": "0x", + "immutableReferences": {}, + "sourceMap": "", + "deployedSourceMap": "", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with GSN meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address payable) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes memory) {\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n return msg.data;\n }\n}\n", + "sourcePath": "@openzeppelin/contracts/utils/Context.sol", + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "exportedSymbols": { + "Context": [3618] + }, + "id": 3619, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3597, + "literals": ["solidity", ">=", "0.6", ".0", "<", "0.8", ".0"], + "nodeType": "PragmaDirective", + "src": "33:31:9" + }, + { + "abstract": true, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3618, + "linearizedBaseContracts": [3618], + "name": "Context", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3605, + "nodeType": "Block", + "src": "668:34:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3602, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "685:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "685:10:9", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 3601, + "id": 3604, + "nodeType": "Return", + "src": "678:17:9" + } + ] + }, + "documentation": null, + "id": 3606, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3598, + "nodeType": "ParameterList", + "parameters": [], + "src": "617:2:9" + }, + "returnParameters": { + "id": 3601, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3600, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3606, + "src": "651:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 3599, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "651:15:9", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "650:17:9" + }, + "scope": 3618, + "src": "598:104:9", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 3616, + "nodeType": "Block", + "src": "773:165:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3611, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "783:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$3618", + "typeString": "contract Context" + } + }, + "id": 3612, + "nodeType": "ExpressionStatement", + "src": "783:4:9" + }, + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3613, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "923:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "923:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 3610, + "id": 3615, + "nodeType": "Return", + "src": "916:15:9" + } + ] + }, + "documentation": null, + "id": 3617, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3607, + "nodeType": "ParameterList", + "parameters": [], + "src": "725:2:9" + }, + "returnParameters": { + "id": 3610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3609, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3617, + "src": "759:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3608, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "759:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "758:14:9" + }, + "scope": 3618, + "src": "708:230:9", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 3619, + "src": "566:374:9" + } + ], + "src": "33:908:9" + }, + "legacyAST": { + "attributes": { + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "exportedSymbols": { + "Context": [3618] + }, + "license": "MIT" + }, + "children": [ + { + "attributes": { + "literals": ["solidity", ">=", "0.6", ".0", "<", "0.8", ".0"] + }, + "id": 3597, + "name": "PragmaDirective", + "src": "33:31:9" + }, + { + "attributes": { + "abstract": true, + "baseContracts": [null], + "contractDependencies": [null], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "linearizedBaseContracts": [3618], + "name": "Context", + "scope": 3619 + }, + "children": [ + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_msgSender", + "overrides": null, + "scope": 3618, + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3598, + "name": "ParameterList", + "src": "617:2:9" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3606, + "stateVariable": false, + "storageLocation": "default", + "type": "address payable", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "payable", + "type": "address payable" + }, + "id": 3599, + "name": "ElementaryTypeName", + "src": "651:15:9" + } + ], + "id": 3600, + "name": "VariableDeclaration", + "src": "651:15:9" + } + ], + "id": 3601, + "name": "ParameterList", + "src": "650:17:9" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 3601 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 3602, + "name": "Identifier", + "src": "685:3:9" + } + ], + "id": 3603, + "name": "MemberAccess", + "src": "685:10:9" + } + ], + "id": 3604, + "name": "Return", + "src": "678:17:9" + } + ], + "id": 3605, + "name": "Block", + "src": "668:34:9" + } + ], + "id": 3606, + "name": "FunctionDefinition", + "src": "598:104:9" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_msgData", + "overrides": null, + "scope": 3618, + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3607, + "name": "ParameterList", + "src": "725:2:9" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3617, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3608, + "name": "ElementaryTypeName", + "src": "759:5:9" + } + ], + "id": 3609, + "name": "VariableDeclaration", + "src": "759:12:9" + } + ], + "id": 3610, + "name": "ParameterList", + "src": "758:14:9" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -28, + "type": "contract Context", + "value": "this" + }, + "id": 3611, + "name": "Identifier", + "src": "783:4:9" + } + ], + "id": 3612, + "name": "ExpressionStatement", + "src": "783:4:9" + }, + { + "attributes": { + "functionReturnParameters": 3610 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "data", + "referencedDeclaration": null, + "type": "bytes calldata" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 3613, + "name": "Identifier", + "src": "923:3:9" + } + ], + "id": 3614, + "name": "MemberAccess", + "src": "923:8:9" + } + ], + "id": 3615, + "name": "Return", + "src": "916:15:9" + } + ], + "id": 3616, + "name": "Block", + "src": "773:165:9" + } + ], + "id": 3617, + "name": "FunctionDefinition", + "src": "708:230:9" + } + ], + "id": 3618, + "name": "ContractDefinition", + "src": "566:374:9" + } + ], + "id": 3619, + "name": "SourceUnit", + "src": "33:908:9" + }, + "compiler": { + "name": "solc", + "version": "0.6.12+commit.27d51765.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.3.4", + "updatedAt": "2021-04-12T21:53:29.929Z", + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} diff --git a/packages/bridge/contracts/ERC20.json b/packages/bridge/contracts/ERC20.json index e10ee8d..28c8a8c 100644 --- a/packages/bridge/contracts/ERC20.json +++ b/packages/bridge/contracts/ERC20.json @@ -1,21 +1,16 @@ { - "fileName": "ERC20.sol", "contractName": "ERC20", - "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"./IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20 {\n using SafeMath for uint256;\n using Address for address;\n\n mapping (address => uint256) private _balances;\n\n mapping (address => mapping (address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n uint8 private _decimals;\n\n /**\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n * a default value of 18.\n *\n * To select a different value for {decimals}, use {_setupDecimals}.\n *\n * All three of these values are immutable: they can only be set once during\n * construction.\n */\n constructor (string memory name, string memory symbol) public {\n _name = name;\n _symbol = symbol;\n _decimals = 18;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(_msgSender(), recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n _approve(_msgSender(), spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20};\n *\n * Requirements:\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for ``sender``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\n require(sender != address(0), \"ERC20: transfer from the zero address\");\n require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(sender, recipient, amount);\n\n _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\n _totalSupply = _totalSupply.sub(amount);\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n *\n * This is internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Sets {decimals} to a value other than the default one of 18.\n *\n * WARNING: This function should only be called from the constructor. Most\n * applications that interact with token contracts will not expect\n * {decimals} to ever change, and may work incorrectly if it does.\n */\n function _setupDecimals(uint8 decimals_) internal {\n _decimals = decimals_;\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be to transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\n}\n", - "sourcePath": "contracts/token/ERC20/ERC20.sol", - "sourceMap": "1345:9446:84:-:0;;;2013:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:4;2085:5;:12;;;;;;;;;;;;:::i;:::-;;2117:6;2107:7;:16;;;;;;;;;;;;:::i;:::-;;2145:2;2133:9;;:14;;;;;;;;;;;;;;;;;;2013:141;;1345:9446;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "1345:9446:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4255:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3262:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4881:317;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3121:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5593:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3418:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2413:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6295:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3738:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3968:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2219:81;2256:13;2288:5;2281:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:81;:::o;4255:166::-;4338:4;4354:39;4363:12;:10;:12::i;:::-;4377:7;4386:6;4354:8;:39::i;:::-;4410:4;4403:11;;4255:166;;;;:::o;3262:98::-;3315:7;3341:12;;3334:19;;3262:98;:::o;4881:317::-;4987:4;5003:36;5013:6;5021:9;5032:6;5003:9;:36::i;:::-;5049:121;5058:6;5066:12;:10;:12::i;:::-;5080:89;5118:6;5080:89;;;;;;;;;;;;;;;;;:11;:19;5092:6;5080:19;;;;;;;;;;;;;;;:33;5100:12;:10;:12::i;:::-;5080:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5049:8;:121::i;:::-;5187:4;5180:11;;4881:317;;;;;:::o;3121:81::-;3162:5;3186:9;;;;;;;;;;;3179:16;;3121:81;:::o;5593:215::-;5681:4;5697:83;5706:12;:10;:12::i;:::-;5720:7;5729:50;5768:10;5729:11;:25;5741:12;:10;:12::i;:::-;5729:25;;;;;;;;;;;;;;;:34;5755:7;5729:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5697:8;:83::i;:::-;5797:4;5790:11;;5593:215;;;;:::o;3418:117::-;3484:7;3510:9;:18;3520:7;3510:18;;;;;;;;;;;;;;;;3503:25;;3418:117;;;:::o;2413:85::-;2452:13;2484:7;2477:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2413:85;:::o;6295:266::-;6388:4;6404:129;6413:12;:10;:12::i;:::-;6427:7;6436:96;6475:15;6436:96;;;;;;;;;;;;;;;;;:11;:25;6448:12;:10;:12::i;:::-;6436:25;;;;;;;;;;;;;;;:34;6462:7;6436:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6404:8;:129::i;:::-;6550:4;6543:11;;6295:266;;;;:::o;3738:172::-;3824:4;3840:42;3850:12;:10;:12::i;:::-;3864:9;3875:6;3840:9;:42::i;:::-;3899:4;3892:11;;3738:172;;;;:::o;3968:149::-;4057:7;4083:11;:18;4095:5;4083:18;;;;;;;;;;;;;;;:27;4102:7;4083:27;;;;;;;;;;;;;;;;4076:34;;3968:149;;;;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;9359:340:84:-;9477:1;9460:19;;:5;:19;;;;9452:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9557:1;9538:21;;:7;:21;;;;9530:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9639:6;9609:11;:18;9621:5;9609:18;;;;;;;;;;;;;;;:27;9628:7;9609:27;;;;;;;;;;;;;;;:36;;;;9676:7;9660:32;;9669:5;9660:32;;;9685:6;9660:32;;;;;;;;;;;;;;;;;;9359:340;;;:::o;7035:530::-;7158:1;7140:20;;:6;:20;;;;7132:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7241:1;7220:23;;:9;:23;;;;7212:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7294:47;7315:6;7323:9;7334:6;7294:20;:47::i;:::-;7372:71;7394:6;7372:71;;;;;;;;;;;;;;;;;:9;:17;7382:6;7372:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7352:9;:17;7362:6;7352:17;;;;;;;;;;;;;;;:91;;;;7476:32;7501:6;7476:9;:20;7486:9;7476:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7453:9;:20;7463:9;7453:20;;;;;;;;;;;;;;;:55;;;;7540:9;7523:35;;7532:6;7523:35;;;7551:6;7523:35;;;;;;;;;;;;;;;;;;7035:530;;;:::o;1746:187:17:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;874:176::-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;10697:92:84:-;;;;:::o", "abi": [ { "inputs": [ { "internalType": "string", - "name": "name", + "name": "name_", "type": "string" }, { "internalType": "string", - "name": "symbol", + "name": "symbol_", "type": "string" } ], @@ -72,6 +67,101 @@ "name": "Transfer", "type": "event" }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -124,48 +214,21 @@ "inputs": [ { "internalType": "address", - "name": "account", + "name": "sender", "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ + }, { "internalType": "address", - "name": "spender", + "name": "recipient", "type": "address" }, { "internalType": "uint256", - "name": "subtractedValue", + "name": "amount", "type": "uint256" } ], - "name": "decreaseAllowance", + "name": "transferFrom", "outputs": [ { "internalType": "bool", @@ -200,88 +263,20 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { "internalType": "address", - "name": "recipient", + "name": "spender", "type": "address" }, { "internalType": "uint256", - "name": "amount", + "name": "subtractedValue", "type": "uint256" } ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", + "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", @@ -293,62 +288,59 @@ "type": "function" } ], + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}, initializes {decimals} with a default value of 18. To select a different value for {decimals}, use {_setupDecimals}. All three of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca0c2396dbeb3503b51abf4248ebf77a1461edad513c01529df51850a012bee3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://991b44ff44e0496e8554a90f4c0512c28faed45104d40430019f3c67ea67740e\",\"dweb:/ipfs/Qmc3nRapVbcctELoZS5qe17zLkFB3bETBfwzCTMF1CSuGE\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b506040516200139f3803806200139f833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040525050508160039080519060200190620001cd9291906200020b565b508060049080519060200190620001e69291906200020b565b506012600560006101000a81548160ff021916908360ff1602179055505050620002b1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b5b80821115620002ad57600081600090555060010162000293565b5090565b6110de80620002c16000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025857806370a08231146102bc57806395d89b4114610314578063a457c2d714610397578063a9059cbb146103fb578063dd62ed3e1461045f576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019557806323b872dd146101b3578063313ce56714610237575b600080fd5b6100b66104d7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610579565b60405180821515815260200191505060405180910390f35b61019d610597565b6040518082815260200191505060405180910390f35b61021f600480360360608110156101c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105a1565b60405180821515815260200191505060405180910390f35b61023f61067a565b604051808260ff16815260200191505060405180910390f35b6102a46004803603604081101561026e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610691565b60405180821515815260200191505060405180910390f35b6102fe600480360360208110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610744565b6040518082815260200191505060405180910390f35b61031c61078c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561035c578082015181840152602081019050610341565b50505050905090810190601f1680156103895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103e3600480360360408110156103ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061082e565b60405180821515815260200191505060405180910390f35b6104476004803603604081101561041157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108fb565b60405180821515815260200191505060405180910390f35b6104c16004803603604081101561047557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610919565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561056f5780601f106105445761010080835404028352916020019161056f565b820191906000526020600020905b81548152906001019060200180831161055257829003601f168201915b5050505050905090565b600061058d6105866109a0565b84846109a8565b6001905092915050565b6000600254905090565b60006105ae848484610b9f565b61066f846105ba6109a0565b61066a8560405180606001604052806028815260200161101360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106206109a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e609092919063ffffffff16565b6109a8565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061073a61069e6109a0565b8461073585600160006106af6109a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f1a90919063ffffffff16565b6109a8565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108245780601f106107f957610100808354040283529160200191610824565b820191906000526020600020905b81548152906001019060200180831161080757829003601f168201915b5050505050905090565b60006108f161083b6109a0565b846108ec8560405180606001604052806025815260200161108460259139600160006108656109a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e609092919063ffffffff16565b6109a8565b6001905092915050565b600061090f6109086109a0565b8484610b9f565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110606024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fcb6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061103b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fa86023913960400191505060405180910390fd5b610cb6838383610fa2565b610d2181604051806060016040528060268152602001610fed602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e609092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610db4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f1a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ed2578082015181840152602081019050610eb7565b50505050905090810190601f168015610eff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600080828401905083811015610f98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bd3f1ebbd37f184285799523b3026426208876513625827f88611ecf03a6e1e864736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025857806370a08231146102bc57806395d89b4114610314578063a457c2d714610397578063a9059cbb146103fb578063dd62ed3e1461045f576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019557806323b872dd146101b3578063313ce56714610237575b600080fd5b6100b66104d7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610579565b60405180821515815260200191505060405180910390f35b61019d610597565b6040518082815260200191505060405180910390f35b61021f600480360360608110156101c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105a1565b60405180821515815260200191505060405180910390f35b61023f61067a565b604051808260ff16815260200191505060405180910390f35b6102a46004803603604081101561026e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610691565b60405180821515815260200191505060405180910390f35b6102fe600480360360208110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610744565b6040518082815260200191505060405180910390f35b61031c61078c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561035c578082015181840152602081019050610341565b50505050905090810190601f1680156103895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103e3600480360360408110156103ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061082e565b60405180821515815260200191505060405180910390f35b6104476004803603604081101561041157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108fb565b60405180821515815260200191505060405180910390f35b6104c16004803603604081101561047557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610919565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561056f5780601f106105445761010080835404028352916020019161056f565b820191906000526020600020905b81548152906001019060200180831161055257829003601f168201915b5050505050905090565b600061058d6105866109a0565b84846109a8565b6001905092915050565b6000600254905090565b60006105ae848484610b9f565b61066f846105ba6109a0565b61066a8560405180606001604052806028815260200161101360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106206109a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e609092919063ffffffff16565b6109a8565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061073a61069e6109a0565b8461073585600160006106af6109a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f1a90919063ffffffff16565b6109a8565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108245780601f106107f957610100808354040283529160200191610824565b820191906000526020600020905b81548152906001019060200180831161080757829003601f168201915b5050505050905090565b60006108f161083b6109a0565b846108ec8560405180606001604052806025815260200161108460259139600160006108656109a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e609092919063ffffffff16565b6109a8565b6001905092915050565b600061090f6109086109a0565b8484610b9f565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110606024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fcb6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061103b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fa86023913960400191505060405180910390fd5b610cb6838383610fa2565b610d2181604051806060016040528060268152602001610fed602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e609092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610db4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f1a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ed2578082015181840152602081019050610eb7565b50505050905090810190601f168015610eff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600080828401905083811015610f98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bd3f1ebbd37f184285799523b3026426208876513625827f88611ecf03a6e1e864736f6c634300060c0033", + "immutableReferences": {}, + "sourceMap": "1321:9474:5:-:0;;;1958:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2040:5;2032;:13;;;;;;;;;;;;:::i;:::-;;2065:7;2055;:17;;;;;;;;;;;;:::i;:::-;;2094:2;2082:9;;:14;;;;;;;;;;;;;;;;;;1958:145;;1321:9474;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "1321:9474:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4244:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3235:106;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4877:317;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3086:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5589:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3399:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2370:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6291:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3727:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3957:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2168:89;2213:13;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;:::o;4244:166::-;4327:4;4343:39;4352:12;:10;:12::i;:::-;4366:7;4375:6;4343:8;:39::i;:::-;4399:4;4392:11;;4244:166;;;;:::o;3235:106::-;3296:7;3322:12;;3315:19;;3235:106;:::o;4877:317::-;4983:4;4999:36;5009:6;5017:9;5028:6;4999:9;:36::i;:::-;5045:121;5054:6;5062:12;:10;:12::i;:::-;5076:89;5114:6;5076:89;;;;;;;;;;;;;;;;;:11;:19;5088:6;5076:19;;;;;;;;;;;;;;;:33;5096:12;:10;:12::i;:::-;5076:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5045:8;:121::i;:::-;5183:4;5176:11;;4877:317;;;;;:::o;3086:89::-;3135:5;3159:9;;;;;;;;;;;3152:16;;3086:89;:::o;5589:215::-;5677:4;5693:83;5702:12;:10;:12::i;:::-;5716:7;5725:50;5764:10;5725:11;:25;5737:12;:10;:12::i;:::-;5725:25;;;;;;;;;;;;;;;:34;5751:7;5725:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5693:8;:83::i;:::-;5793:4;5786:11;;5589:215;;;;:::o;3399:125::-;3473:7;3499:9;:18;3509:7;3499:18;;;;;;;;;;;;;;;;3492:25;;3399:125;;;:::o;2370:93::-;2417:13;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2370:93;:::o;6291:266::-;6384:4;6400:129;6409:12;:10;:12::i;:::-;6423:7;6432:96;6471:15;6432:96;;;;;;;;;;;;;;;;;:11;:25;6444:12;:10;:12::i;:::-;6432:25;;;;;;;;;;;;;;;:34;6458:7;6432:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6400:8;:129::i;:::-;6546:4;6539:11;;6291:266;;;;:::o;3727:172::-;3813:4;3829:42;3839:12;:10;:12::i;:::-;3853:9;3864:6;3829:9;:42::i;:::-;3888:4;3881:11;;3727:172;;;;:::o;3957:149::-;4046:7;4072:11;:18;4084:5;4072:18;;;;;;;;;;;;;;;:27;4091:7;4072:27;;;;;;;;;;;;;;;;4065:34;;3957:149;;;;:::o;598:104:9:-;651:15;685:10;678:17;;598:104;:::o;9355:340:5:-;9473:1;9456:19;;:5;:19;;;;9448:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9553:1;9534:21;;:7;:21;;;;9526:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9635:6;9605:11;:18;9617:5;9605:18;;;;;;;;;;;;;;;:27;9624:7;9605:27;;;;;;;;;;;;;;;:36;;;;9672:7;9656:32;;9665:5;9656:32;;;9681:6;9656:32;;;;;;;;;;;;;;;;;;9355:340;;;:::o;7031:530::-;7154:1;7136:20;;:6;:20;;;;7128:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7237:1;7216:23;;:9;:23;;;;7208:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7290:47;7311:6;7319:9;7330:6;7290:20;:47::i;:::-;7368:71;7390:6;7368:71;;;;;;;;;;;;;;;;;:9;:17;7378:6;7368:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7348:9;:17;7358:6;7348:17;;;;;;;;;;;;;;;:91;;;;7472:32;7497:6;7472:9;:20;7482:9;7472:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7449:9;:20;7459:9;7449:20;;;;;;;;;;;;;;;:55;;;;7536:9;7519:35;;7528:6;7519:35;;;7547:6;7519:35;;;;;;;;;;;;;;;;;;7031:530;;;:::o;5432:163:4:-;5518:7;5550:1;5545;:6;;5553:12;5537:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5587:1;5583;:5;5576:12;;5432:163;;;;;:::o;2690:175::-;2748:7;2767:9;2783:1;2779;:5;2767:17;;2807:1;2802;:6;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2850:8;;;2690:175;;;;:::o;10701:92:5:-;;;;:::o", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"../../utils/Context.sol\";\nimport \"./IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20 {\n using SafeMath for uint256;\n\n mapping (address => uint256) private _balances;\n\n mapping (address => mapping (address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n uint8 private _decimals;\n\n /**\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n * a default value of 18.\n *\n * To select a different value for {decimals}, use {_setupDecimals}.\n *\n * All three of these values are immutable: they can only be set once during\n * construction.\n */\n constructor (string memory name_, string memory symbol_) public {\n _name = name_;\n _symbol = symbol_;\n _decimals = 18;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return _decimals;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(_msgSender(), recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n _approve(_msgSender(), spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * Requirements:\n *\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for ``sender``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\n require(sender != address(0), \"ERC20: transfer from the zero address\");\n require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(sender, recipient, amount);\n\n _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\n _totalSupply = _totalSupply.sub(amount);\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Sets {decimals} to a value other than the default one of 18.\n *\n * WARNING: This function should only be called from the constructor. Most\n * applications that interact with token contracts will not expect\n * {decimals} to ever change, and may work incorrectly if it does.\n */\n function _setupDecimals(uint8 decimals_) internal virtual {\n _decimals = decimals_;\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be to transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\n}\n", + "sourcePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "ast": { - "absolutePath": "contracts/token/ERC20/ERC20.sol", + "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "exportedSymbols": { - "ERC20": [9194] + "ERC20": [3008] }, - "id": 9195, + "id": 3009, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ { - "id": 8689, - "literals": ["solidity", "^", "0.6", ".0"], + "id": 2507, + "literals": ["solidity", ">=", "0.6", ".0", "<", "0.8", ".0"], "nodeType": "PragmaDirective", - "src": "33:23:84" + "src": "33:31:5" }, { - "absolutePath": "contracts/GSN/Context.sol", - "file": "../../GSN/Context.sol", - "id": 8690, + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "file": "../../utils/Context.sol", + "id": 2508, "nodeType": "ImportDirective", - "scope": 9195, - "sourceUnit": 23, - "src": "58:31:84", + "scope": 3009, + "sourceUnit": 3619, + "src": "66:33:5", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "contracts/token/ERC20/IERC20.sol", + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 8691, + "id": 2509, "nodeType": "ImportDirective", - "scope": 9195, - "sourceUnit": 9774, - "src": "90:22:84", + "scope": 3009, + "sourceUnit": 3087, + "src": "100:22:5", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "contracts/math/SafeMath.sol", + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 8692, + "id": 2510, "nodeType": "ImportDirective", - "scope": 9195, - "sourceUnit": 2422, - "src": "113:33:84", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "contracts/utils/Address.sol", - "file": "../../utils/Address.sol", - "id": 8693, - "nodeType": "ImportDirective", - "scope": 9195, - "sourceUnit": 12815, - "src": "147:33:84", + "scope": 3009, + "sourceUnit": 2506, + "src": "123:33:5", "symbolAliases": [], "unitAlias": "" }, @@ -359,117 +351,89 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 8695, + "id": 2512, "name": "Context", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 22, - "src": "1363:7:84", + "referencedDeclaration": 3618, + "src": "1339:7:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$22", + "typeIdentifier": "t_contract$_Context_$3618", "typeString": "contract Context" } }, - "id": 8696, + "id": 2513, "nodeType": "InheritanceSpecifier", - "src": "1363:7:84" + "src": "1339:7:5" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 8697, + "id": 2514, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 9773, - "src": "1372:6:84", + "referencedDeclaration": 3086, + "src": "1348:6:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$9773", + "typeIdentifier": "t_contract$_IERC20_$3086", "typeString": "contract IERC20" } }, - "id": 8698, + "id": 2515, "nodeType": "InheritanceSpecifier", - "src": "1372:6:84" + "src": "1348:6:5" } ], - "contractDependencies": [22, 9773], + "contractDependencies": [3086, 3618], "contractKind": "contract", "documentation": { - "id": 8694, + "id": 2511, "nodeType": "StructuredDocumentation", - "src": "182:1162:84", + "src": "158:1162:5", "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}." }, "fullyImplemented": true, - "id": 9194, - "linearizedBaseContracts": [9194, 9773, 22], + "id": 3008, + "linearizedBaseContracts": [3008, 3086, 3618], "name": "ERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 8701, + "id": 2518, "libraryName": { "contractScope": null, - "id": 8699, + "id": 2516, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2421, - "src": "1391:8:84", + "referencedDeclaration": 2505, + "src": "1367:8:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$2421", + "typeIdentifier": "t_contract$_SafeMath_$2505", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "1385:27:84", + "src": "1361:27:5", "typeName": { - "id": 8700, + "id": 2517, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1404:7:84", + "src": "1380:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, - { - "id": 8704, - "libraryName": { - "contractScope": null, - "id": 8702, - "name": "Address", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 12814, - "src": "1423:7:84", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Address_$12814", - "typeString": "library Address" - } - }, - "nodeType": "UsingForDirective", - "src": "1417:26:84", - "typeName": { - "id": 8703, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1435:7:84", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, { "constant": false, - "id": 8708, + "id": 2522, "mutability": "mutable", "name": "_balances", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9194, - "src": "1449:46:84", + "scope": 3008, + "src": "1394:46:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -477,28 +441,28 @@ "typeString": "mapping(address => uint256)" }, "typeName": { - "id": 8707, + "id": 2521, "keyType": { - "id": 8705, + "id": 2519, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1458:7:84", + "src": "1403:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1449:28:84", + "src": "1394:28:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 8706, + "id": 2520, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1469:7:84", + "src": "1414:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -510,13 +474,13 @@ }, { "constant": false, - "id": 8714, + "id": 2528, "mutability": "mutable", "name": "_allowances", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9194, - "src": "1502:69:84", + "scope": 3008, + "src": "1447:69:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -524,46 +488,46 @@ "typeString": "mapping(address => mapping(address => uint256))" }, "typeName": { - "id": 8713, + "id": 2527, "keyType": { - "id": 8709, + "id": 2523, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1511:7:84", + "src": "1456:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1502:49:84", + "src": "1447:49:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "valueType": { - "id": 8712, + "id": 2526, "keyType": { - "id": 8710, + "id": 2524, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1531:7:84", + "src": "1476:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1522:28:84", + "src": "1467:28:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 8711, + "id": 2525, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1542:7:84", + "src": "1487:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -576,13 +540,13 @@ }, { "constant": false, - "id": 8716, + "id": 2530, "mutability": "mutable", "name": "_totalSupply", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9194, - "src": "1578:28:84", + "scope": 3008, + "src": "1523:28:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -590,10 +554,10 @@ "typeString": "uint256" }, "typeName": { - "id": 8715, + "id": 2529, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1578:7:84", + "src": "1523:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -604,13 +568,13 @@ }, { "constant": false, - "id": 8718, + "id": 2532, "mutability": "mutable", "name": "_name", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9194, - "src": "1613:20:84", + "scope": 3008, + "src": "1558:20:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -618,10 +582,10 @@ "typeString": "string" }, "typeName": { - "id": 8717, + "id": 2531, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1613:6:84", + "src": "1558:6:5", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -632,13 +596,13 @@ }, { "constant": false, - "id": 8720, + "id": 2534, "mutability": "mutable", "name": "_symbol", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9194, - "src": "1639:22:84", + "scope": 3008, + "src": "1584:22:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -646,10 +610,10 @@ "typeString": "string" }, "typeName": { - "id": 8719, + "id": 2533, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1639:6:84", + "src": "1584:6:5", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -660,13 +624,13 @@ }, { "constant": false, - "id": 8722, + "id": 2536, "mutability": "mutable", "name": "_decimals", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9194, - "src": "1667:23:84", + "scope": 3008, + "src": "1612:23:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -674,10 +638,10 @@ "typeString": "uint8" }, "typeName": { - "id": 8721, + "id": 2535, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1667:5:84", + "src": "1612:5:5", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -688,26 +652,26 @@ }, { "body": { - "id": 8742, + "id": 2556, "nodeType": "Block", - "src": "2075:79:84", + "src": "2022:81:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 8732, + "id": 2546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 8730, + "id": 2544, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8718, - "src": "2085:5:84", + "referencedDeclaration": 2532, + "src": "2032:5:5", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -717,43 +681,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 8731, - "name": "name", + "id": 2545, + "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8725, - "src": "2093:4:84", + "referencedDeclaration": 2539, + "src": "2040:5:5", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, - "src": "2085:12:84", + "src": "2032:13:5", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "id": 8733, + "id": 2547, "nodeType": "ExpressionStatement", - "src": "2085:12:84" + "src": "2032:13:5" }, { "expression": { "argumentTypes": null, - "id": 8736, + "id": 2550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 8734, + "id": 2548, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8720, - "src": "2107:7:84", + "referencedDeclaration": 2534, + "src": "2055:7:5", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -763,43 +727,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 8735, - "name": "symbol", + "id": 2549, + "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8727, - "src": "2117:6:84", + "referencedDeclaration": 2541, + "src": "2065:7:5", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, - "src": "2107:16:84", + "src": "2055:17:5", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "id": 8737, + "id": 2551, "nodeType": "ExpressionStatement", - "src": "2107:16:84" + "src": "2055:17:5" }, { "expression": { "argumentTypes": null, - "id": 8740, + "id": 2554, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 8738, + "id": 2552, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8722, - "src": "2133:9:84", + "referencedDeclaration": 2536, + "src": "2082:9:5", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -810,14 +774,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "3138", - "id": 8739, + "id": 2553, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2145:2:84", + "src": "2094:2:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", @@ -825,25 +789,25 @@ }, "value": "18" }, - "src": "2133:14:84", + "src": "2082:14:5", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 8741, + "id": 2555, "nodeType": "ExpressionStatement", - "src": "2133:14:84" + "src": "2082:14:5" } ] }, "documentation": { - "id": 8723, + "id": 2537, "nodeType": "StructuredDocumentation", - "src": "1697:311:84", + "src": "1642:311:5", "text": " @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n a default value of 18.\n To select a different value for {decimals}, use {_setupDecimals}.\n All three of these values are immutable: they can only be set once during\n construction." }, - "id": 8743, + "id": 2557, "implemented": true, "kind": "constructor", "modifiers": [], @@ -851,18 +815,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 8728, + "id": 2542, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8725, + "id": 2539, "mutability": "mutable", - "name": "name", + "name": "name_", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8743, - "src": "2026:18:84", + "scope": 2557, + "src": "1971:19:5", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -870,10 +834,10 @@ "typeString": "string" }, "typeName": { - "id": 8724, + "id": 2538, "name": "string", "nodeType": "ElementaryTypeName", - "src": "2026:6:84", + "src": "1971:6:5", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -884,13 +848,13 @@ }, { "constant": false, - "id": 8727, + "id": 2541, "mutability": "mutable", - "name": "symbol", + "name": "symbol_", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8743, - "src": "2046:20:84", + "scope": 2557, + "src": "1992:21:5", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -898,10 +862,10 @@ "typeString": "string" }, "typeName": { - "id": 8726, + "id": 2540, "name": "string", "nodeType": "ElementaryTypeName", - "src": "2046:6:84", + "src": "1992:6:5", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -911,55 +875,55 @@ "visibility": "internal" } ], - "src": "2025:42:84" + "src": "1970:44:5" }, "returnParameters": { - "id": 8729, + "id": 2543, "nodeType": "ParameterList", "parameters": [], - "src": "2075:0:84" + "src": "2022:0:5" }, - "scope": 9194, - "src": "2013:141:84", + "scope": 3008, + "src": "1958:145:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { - "id": 8751, + "id": 2565, "nodeType": "Block", - "src": "2271:29:84", + "src": "2228:29:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 8749, + "id": 2563, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8718, - "src": "2288:5:84", + "referencedDeclaration": 2532, + "src": "2245:5:5", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "functionReturnParameters": 8748, - "id": 8750, + "functionReturnParameters": 2562, + "id": 2564, "nodeType": "Return", - "src": "2281:12:84" + "src": "2238:12:5" } ] }, "documentation": { - "id": 8744, + "id": 2558, "nodeType": "StructuredDocumentation", - "src": "2160:54:84", + "src": "2109:54:5", "text": " @dev Returns the name of the token." }, "functionSelector": "06fdde03", - "id": 8752, + "id": 2566, "implemented": true, "kind": "function", "modifiers": [], @@ -967,24 +931,24 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 8745, + "id": 2559, "nodeType": "ParameterList", "parameters": [], - "src": "2232:2:84" + "src": "2181:2:5" }, "returnParameters": { - "id": 8748, + "id": 2562, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8747, + "id": 2561, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8752, - "src": "2256:13:84", + "scope": 2566, + "src": "2213:13:5", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -992,10 +956,10 @@ "typeString": "string" }, "typeName": { - "id": 8746, + "id": 2560, "name": "string", "nodeType": "ElementaryTypeName", - "src": "2256:6:84", + "src": "2213:6:5", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1005,49 +969,49 @@ "visibility": "internal" } ], - "src": "2255:15:84" + "src": "2212:15:5" }, - "scope": 9194, - "src": "2219:81:84", + "scope": 3008, + "src": "2168:89:5", "stateMutability": "view", - "virtual": false, + "virtual": true, "visibility": "public" }, { "body": { - "id": 8760, + "id": 2574, "nodeType": "Block", - "src": "2467:31:84", + "src": "2432:31:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 8758, + "id": 2572, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8720, - "src": "2484:7:84", + "referencedDeclaration": 2534, + "src": "2449:7:5", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "functionReturnParameters": 8757, - "id": 8759, + "functionReturnParameters": 2571, + "id": 2573, "nodeType": "Return", - "src": "2477:14:84" + "src": "2442:14:5" } ] }, "documentation": { - "id": 8753, + "id": 2567, "nodeType": "StructuredDocumentation", - "src": "2306:102:84", + "src": "2263:102:5", "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." }, "functionSelector": "95d89b41", - "id": 8761, + "id": 2575, "implemented": true, "kind": "function", "modifiers": [], @@ -1055,24 +1019,24 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 8754, + "id": 2568, "nodeType": "ParameterList", "parameters": [], - "src": "2428:2:84" + "src": "2385:2:5" }, "returnParameters": { - "id": 8757, + "id": 2571, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8756, + "id": 2570, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8761, - "src": "2452:13:84", + "scope": 2575, + "src": "2417:13:5", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1080,10 +1044,10 @@ "typeString": "string" }, "typeName": { - "id": 8755, + "id": 2569, "name": "string", "nodeType": "ElementaryTypeName", - "src": "2452:6:84", + "src": "2417:6:5", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1093,49 +1057,49 @@ "visibility": "internal" } ], - "src": "2451:15:84" + "src": "2416:15:5" }, - "scope": 9194, - "src": "2413:85:84", + "scope": 3008, + "src": "2370:93:5", "stateMutability": "view", - "virtual": false, + "virtual": true, "visibility": "public" }, { "body": { - "id": 8769, + "id": 2583, "nodeType": "Block", - "src": "3169:33:84", + "src": "3142:33:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 8767, + "id": 2581, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8722, - "src": "3186:9:84", + "referencedDeclaration": 2536, + "src": "3159:9:5", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 8766, - "id": 8768, + "functionReturnParameters": 2580, + "id": 2582, "nodeType": "Return", - "src": "3179:16:84" + "src": "3152:16:5" } ] }, "documentation": { - "id": 8762, + "id": 2576, "nodeType": "StructuredDocumentation", - "src": "2504:612:84", + "src": "2469:612:5", "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." }, "functionSelector": "313ce567", - "id": 8770, + "id": 2584, "implemented": true, "kind": "function", "modifiers": [], @@ -1143,24 +1107,24 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 8763, + "id": 2577, "nodeType": "ParameterList", "parameters": [], - "src": "3138:2:84" + "src": "3103:2:5" }, "returnParameters": { - "id": 8766, + "id": 2580, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8765, + "id": 2579, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8770, - "src": "3162:5:84", + "scope": 2584, + "src": "3135:5:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1168,10 +1132,10 @@ "typeString": "uint8" }, "typeName": { - "id": 8764, + "id": 2578, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "3162:5:84", + "src": "3135:5:5", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1181,80 +1145,80 @@ "visibility": "internal" } ], - "src": "3161:7:84" + "src": "3134:7:5" }, - "scope": 9194, - "src": "3121:81:84", + "scope": 3008, + "src": "3086:89:5", "stateMutability": "view", - "virtual": false, + "virtual": true, "visibility": "public" }, { - "baseFunctions": [9704], + "baseFunctions": [3017], "body": { - "id": 8779, + "id": 2593, "nodeType": "Block", - "src": "3324:36:84", + "src": "3305:36:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 8777, + "id": 2591, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8716, - "src": "3341:12:84", + "referencedDeclaration": 2530, + "src": "3322:12:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 8776, - "id": 8778, + "functionReturnParameters": 2590, + "id": 2592, "nodeType": "Return", - "src": "3334:19:84" + "src": "3315:19:5" } ] }, "documentation": { - "id": 8771, + "id": 2585, "nodeType": "StructuredDocumentation", - "src": "3208:49:84", + "src": "3181:49:5", "text": " @dev See {IERC20-totalSupply}." }, "functionSelector": "18160ddd", - "id": 8780, + "id": 2594, "implemented": true, "kind": "function", "modifiers": [], "name": "totalSupply", "nodeType": "FunctionDefinition", "overrides": { - "id": 8773, + "id": 2587, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "3297:8:84" + "src": "3278:8:5" }, "parameters": { - "id": 8772, + "id": 2586, "nodeType": "ParameterList", "parameters": [], - "src": "3282:2:84" + "src": "3255:2:5" }, "returnParameters": { - "id": 8776, + "id": 2590, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8775, + "id": 2589, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8780, - "src": "3315:7:84", + "scope": 2594, + "src": "3296:7:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1262,10 +1226,10 @@ "typeString": "uint256" }, "typeName": { - "id": 8774, + "id": 2588, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3315:7:84", + "src": "3296:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1275,46 +1239,46 @@ "visibility": "internal" } ], - "src": "3314:9:84" + "src": "3295:9:5" }, - "scope": 9194, - "src": "3262:98:84", + "scope": 3008, + "src": "3235:106:5", "stateMutability": "view", - "virtual": false, + "virtual": true, "visibility": "public" }, { - "baseFunctions": [9712], + "baseFunctions": [3025], "body": { - "id": 8793, + "id": 2607, "nodeType": "Block", - "src": "3493:42:84", + "src": "3482:42:5", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 8789, + "id": 2603, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8708, - "src": "3510:9:84", + "referencedDeclaration": 2522, + "src": "3499:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 8791, + "id": 2605, "indexExpression": { "argumentTypes": null, - "id": 8790, + "id": 2604, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8783, - "src": "3520:7:84", + "referencedDeclaration": 2597, + "src": "3509:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1325,51 +1289,51 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3510:18:84", + "src": "3499:18:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 8788, - "id": 8792, + "functionReturnParameters": 2602, + "id": 2606, "nodeType": "Return", - "src": "3503:25:84" + "src": "3492:25:5" } ] }, "documentation": { - "id": 8781, + "id": 2595, "nodeType": "StructuredDocumentation", - "src": "3366:47:84", + "src": "3347:47:5", "text": " @dev See {IERC20-balanceOf}." }, "functionSelector": "70a08231", - "id": 8794, + "id": 2608, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "overrides": { - "id": 8785, + "id": 2599, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "3466:8:84" + "src": "3455:8:5" }, "parameters": { - "id": 8784, + "id": 2598, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8783, + "id": 2597, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8794, - "src": "3437:15:84", + "scope": 2608, + "src": "3418:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1377,10 +1341,10 @@ "typeString": "address" }, "typeName": { - "id": 8782, + "id": 2596, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3437:7:84", + "src": "3418:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1391,21 +1355,21 @@ "visibility": "internal" } ], - "src": "3436:17:84" + "src": "3417:17:5" }, "returnParameters": { - "id": 8788, + "id": 2602, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8787, + "id": 2601, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8794, - "src": "3484:7:84", + "scope": 2608, + "src": "3473:7:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1413,10 +1377,10 @@ "typeString": "uint256" }, "typeName": { - "id": 8786, + "id": 2600, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3484:7:84", + "src": "3473:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1426,20 +1390,20 @@ "visibility": "internal" } ], - "src": "3483:9:84" + "src": "3472:9:5" }, - "scope": 9194, - "src": "3418:117:84", + "scope": 3008, + "src": "3399:125:5", "stateMutability": "view", - "virtual": false, + "virtual": true, "visibility": "public" }, { - "baseFunctions": [9722], + "baseFunctions": [3035], "body": { - "id": 8814, + "id": 2628, "nodeType": "Block", - "src": "3830:80:84", + "src": "3819:80:5", "statements": [ { "expression": { @@ -1450,18 +1414,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 8806, + "id": 2620, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "3850:10:84", + "referencedDeclaration": 3606, + "src": "3839:10:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 8807, + "id": 2621, "isConstant": false, "isLValue": false, "isPure": false, @@ -1469,7 +1433,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3850:12:84", + "src": "3839:12:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1478,12 +1442,12 @@ }, { "argumentTypes": null, - "id": 8808, + "id": 2622, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8797, - "src": "3864:9:84", + "referencedDeclaration": 2611, + "src": "3853:9:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1491,12 +1455,12 @@ }, { "argumentTypes": null, - "id": 8809, + "id": 2623, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8799, - "src": "3875:6:84", + "referencedDeclaration": 2613, + "src": "3864:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1518,18 +1482,18 @@ "typeString": "uint256" } ], - "id": 8805, + "id": 2619, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9015, - "src": "3840:9:84", + "referencedDeclaration": 2829, + "src": "3829:9:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 8810, + "id": 2624, "isConstant": false, "isLValue": false, "isPure": false, @@ -1537,29 +1501,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3840:42:84", + "src": "3829:42:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 8811, + "id": 2625, "nodeType": "ExpressionStatement", - "src": "3840:42:84" + "src": "3829:42:5" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 8812, + "id": 2626, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3899:4:84", + "src": "3888:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1567,45 +1531,45 @@ }, "value": "true" }, - "functionReturnParameters": 8804, - "id": 8813, + "functionReturnParameters": 2618, + "id": 2627, "nodeType": "Return", - "src": "3892:11:84" + "src": "3881:11:5" } ] }, "documentation": { - "id": 8795, + "id": 2609, "nodeType": "StructuredDocumentation", - "src": "3541:192:84", + "src": "3530:192:5", "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`." }, "functionSelector": "a9059cbb", - "id": 8815, + "id": 2629, "implemented": true, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "overrides": { - "id": 8801, + "id": 2615, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "3806:8:84" + "src": "3795:8:5" }, "parameters": { - "id": 8800, + "id": 2614, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8797, + "id": 2611, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8815, - "src": "3756:17:84", + "scope": 2629, + "src": "3745:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1613,10 +1577,10 @@ "typeString": "address" }, "typeName": { - "id": 8796, + "id": 2610, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3756:7:84", + "src": "3745:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1628,13 +1592,13 @@ }, { "constant": false, - "id": 8799, + "id": 2613, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8815, - "src": "3775:14:84", + "scope": 2629, + "src": "3764:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1642,10 +1606,10 @@ "typeString": "uint256" }, "typeName": { - "id": 8798, + "id": 2612, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3775:7:84", + "src": "3764:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1655,21 +1619,21 @@ "visibility": "internal" } ], - "src": "3755:35:84" + "src": "3744:35:5" }, "returnParameters": { - "id": 8804, + "id": 2618, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8803, + "id": 2617, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8815, - "src": "3824:4:84", + "scope": 2629, + "src": "3813:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1677,10 +1641,10 @@ "typeString": "bool" }, "typeName": { - "id": 8802, + "id": 2616, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3824:4:84", + "src": "3813:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1690,20 +1654,20 @@ "visibility": "internal" } ], - "src": "3823:6:84" + "src": "3812:6:5" }, - "scope": 9194, - "src": "3738:172:84", + "scope": 3008, + "src": "3727:172:5", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { - "baseFunctions": [9732], + "baseFunctions": [3045], "body": { - "id": 8832, + "id": 2646, "nodeType": "Block", - "src": "4066:51:84", + "src": "4055:51:5", "statements": [ { "expression": { @@ -1712,26 +1676,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 8826, + "id": 2640, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8714, - "src": "4083:11:84", + "referencedDeclaration": 2528, + "src": "4072:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 8828, + "id": 2642, "indexExpression": { "argumentTypes": null, - "id": 8827, + "id": 2641, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8818, - "src": "4095:5:84", + "referencedDeclaration": 2632, + "src": "4084:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1742,21 +1706,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4083:18:84", + "src": "4072:18:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 8830, + "id": 2644, "indexExpression": { "argumentTypes": null, - "id": 8829, + "id": 2643, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8820, - "src": "4102:7:84", + "referencedDeclaration": 2634, + "src": "4091:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1767,51 +1731,51 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4083:27:84", + "src": "4072:27:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 8825, - "id": 8831, + "functionReturnParameters": 2639, + "id": 2645, "nodeType": "Return", - "src": "4076:34:84" + "src": "4065:34:5" } ] }, "documentation": { - "id": 8816, + "id": 2630, "nodeType": "StructuredDocumentation", - "src": "3916:47:84", + "src": "3905:47:5", "text": " @dev See {IERC20-allowance}." }, "functionSelector": "dd62ed3e", - "id": 8833, + "id": 2647, "implemented": true, "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", "overrides": { - "id": 8822, + "id": 2636, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "4039:8:84" + "src": "4028:8:5" }, "parameters": { - "id": 8821, + "id": 2635, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8818, + "id": 2632, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8833, - "src": "3987:13:84", + "scope": 2647, + "src": "3976:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1819,10 +1783,10 @@ "typeString": "address" }, "typeName": { - "id": 8817, + "id": 2631, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3987:7:84", + "src": "3976:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1834,13 +1798,13 @@ }, { "constant": false, - "id": 8820, + "id": 2634, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8833, - "src": "4002:15:84", + "scope": 2647, + "src": "3991:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1848,10 +1812,10 @@ "typeString": "address" }, "typeName": { - "id": 8819, + "id": 2633, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4002:7:84", + "src": "3991:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1862,21 +1826,21 @@ "visibility": "internal" } ], - "src": "3986:32:84" + "src": "3975:32:5" }, "returnParameters": { - "id": 8825, + "id": 2639, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8824, + "id": 2638, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8833, - "src": "4057:7:84", + "scope": 2647, + "src": "4046:7:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1884,10 +1848,10 @@ "typeString": "uint256" }, "typeName": { - "id": 8823, + "id": 2637, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4057:7:84", + "src": "4046:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1897,20 +1861,20 @@ "visibility": "internal" } ], - "src": "4056:9:84" + "src": "4045:9:5" }, - "scope": 9194, - "src": "3968:149:84", + "scope": 3008, + "src": "3957:149:5", "stateMutability": "view", "virtual": true, "visibility": "public" }, { - "baseFunctions": [9742], + "baseFunctions": [3055], "body": { - "id": 8853, + "id": 2667, "nodeType": "Block", - "src": "4344:77:84", + "src": "4333:77:5", "statements": [ { "expression": { @@ -1921,18 +1885,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 8845, + "id": 2659, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "4363:10:84", + "referencedDeclaration": 3606, + "src": "4352:10:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 8846, + "id": 2660, "isConstant": false, "isLValue": false, "isPure": false, @@ -1940,7 +1904,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4363:12:84", + "src": "4352:12:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1949,12 +1913,12 @@ }, { "argumentTypes": null, - "id": 8847, + "id": 2661, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8836, - "src": "4377:7:84", + "referencedDeclaration": 2650, + "src": "4366:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1962,12 +1926,12 @@ }, { "argumentTypes": null, - "id": 8848, + "id": 2662, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8838, - "src": "4386:6:84", + "referencedDeclaration": 2652, + "src": "4375:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1989,18 +1953,18 @@ "typeString": "uint256" } ], - "id": 8844, + "id": 2658, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9171, - "src": "4354:8:84", + "referencedDeclaration": 2985, + "src": "4343:8:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 8849, + "id": 2663, "isConstant": false, "isLValue": false, "isPure": false, @@ -2008,29 +1972,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4354:39:84", + "src": "4343:39:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 8850, + "id": 2664, "nodeType": "ExpressionStatement", - "src": "4354:39:84" + "src": "4343:39:5" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 8851, + "id": 2665, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4410:4:84", + "src": "4399:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2038,45 +2002,45 @@ }, "value": "true" }, - "functionReturnParameters": 8843, - "id": 8852, + "functionReturnParameters": 2657, + "id": 2666, "nodeType": "Return", - "src": "4403:11:84" + "src": "4392:11:5" } ] }, "documentation": { - "id": 8834, + "id": 2648, "nodeType": "StructuredDocumentation", - "src": "4123:127:84", + "src": "4112:127:5", "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address." }, "functionSelector": "095ea7b3", - "id": 8854, + "id": 2668, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "overrides": { - "id": 8840, + "id": 2654, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "4320:8:84" + "src": "4309:8:5" }, "parameters": { - "id": 8839, + "id": 2653, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8836, + "id": 2650, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8854, - "src": "4272:15:84", + "scope": 2668, + "src": "4261:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2084,10 +2048,10 @@ "typeString": "address" }, "typeName": { - "id": 8835, + "id": 2649, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4272:7:84", + "src": "4261:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2099,13 +2063,13 @@ }, { "constant": false, - "id": 8838, + "id": 2652, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8854, - "src": "4289:14:84", + "scope": 2668, + "src": "4278:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2113,10 +2077,10 @@ "typeString": "uint256" }, "typeName": { - "id": 8837, + "id": 2651, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4289:7:84", + "src": "4278:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2126,21 +2090,21 @@ "visibility": "internal" } ], - "src": "4271:33:84" + "src": "4260:33:5" }, "returnParameters": { - "id": 8843, + "id": 2657, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8842, + "id": 2656, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8854, - "src": "4338:4:84", + "scope": 2668, + "src": "4327:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2148,10 +2112,10 @@ "typeString": "bool" }, "typeName": { - "id": 8841, + "id": 2655, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4338:4:84", + "src": "4327:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2161,20 +2125,20 @@ "visibility": "internal" } ], - "src": "4337:6:84" + "src": "4326:6:5" }, - "scope": 9194, - "src": "4255:166:84", + "scope": 3008, + "src": "4244:166:5", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { - "baseFunctions": [9754], + "baseFunctions": [3067], "body": { - "id": 8891, + "id": 2705, "nodeType": "Block", - "src": "4993:205:84", + "src": "4989:205:5", "statements": [ { "expression": { @@ -2182,12 +2146,12 @@ "arguments": [ { "argumentTypes": null, - "id": 8868, + "id": 2682, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8857, - "src": "5013:6:84", + "referencedDeclaration": 2671, + "src": "5009:6:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2195,12 +2159,12 @@ }, { "argumentTypes": null, - "id": 8869, + "id": 2683, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8859, - "src": "5021:9:84", + "referencedDeclaration": 2673, + "src": "5017:9:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2208,12 +2172,12 @@ }, { "argumentTypes": null, - "id": 8870, + "id": 2684, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8861, - "src": "5032:6:84", + "referencedDeclaration": 2675, + "src": "5028:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2235,18 +2199,18 @@ "typeString": "uint256" } ], - "id": 8867, + "id": 2681, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9015, - "src": "5003:9:84", + "referencedDeclaration": 2829, + "src": "4999:9:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 8871, + "id": 2685, "isConstant": false, "isLValue": false, "isPure": false, @@ -2254,16 +2218,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5003:36:84", + "src": "4999:36:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 8872, + "id": 2686, "nodeType": "ExpressionStatement", - "src": "5003:36:84" + "src": "4999:36:5" }, { "expression": { @@ -2271,12 +2235,12 @@ "arguments": [ { "argumentTypes": null, - "id": 8874, + "id": 2688, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8857, - "src": "5058:6:84", + "referencedDeclaration": 2671, + "src": "5054:6:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2287,18 +2251,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 8875, + "id": 2689, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "5066:10:84", + "referencedDeclaration": 3606, + "src": "5062:10:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 8876, + "id": 2690, "isConstant": false, "isLValue": false, "isPure": false, @@ -2306,7 +2270,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5066:12:84", + "src": "5062:12:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -2318,12 +2282,12 @@ "arguments": [ { "argumentTypes": null, - "id": 8884, + "id": 2698, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8861, - "src": "5118:6:84", + "referencedDeclaration": 2675, + "src": "5114:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2332,14 +2296,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", - "id": 8885, + "id": 2699, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5126:42:84", + "src": "5122:42:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", @@ -2365,26 +2329,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 8877, + "id": 2691, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8714, - "src": "5080:11:84", + "referencedDeclaration": 2528, + "src": "5076:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 8879, + "id": 2693, "indexExpression": { "argumentTypes": null, - "id": 8878, + "id": 2692, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8857, - "src": "5092:6:84", + "referencedDeclaration": 2671, + "src": "5088:6:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2395,30 +2359,30 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5080:19:84", + "src": "5076:19:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 8882, + "id": 2696, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 8880, + "id": 2694, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "5100:10:84", + "referencedDeclaration": 3606, + "src": "5096:10:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 8881, + "id": 2695, "isConstant": false, "isLValue": false, "isPure": false, @@ -2426,7 +2390,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5100:12:84", + "src": "5096:12:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -2438,27 +2402,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5080:33:84", + "src": "5076:33:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 8883, + "id": 2697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 2299, - "src": "5080:37:84", + "referencedDeclaration": 2456, + "src": "5076:37:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 8886, + "id": 2700, "isConstant": false, "isLValue": false, "isPure": false, @@ -2466,7 +2430,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5080:89:84", + "src": "5076:89:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2489,18 +2453,18 @@ "typeString": "uint256" } ], - "id": 8873, + "id": 2687, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9171, - "src": "5049:8:84", + "referencedDeclaration": 2985, + "src": "5045:8:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 8887, + "id": 2701, "isConstant": false, "isLValue": false, "isPure": false, @@ -2508,29 +2472,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5049:121:84", + "src": "5045:121:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 8888, + "id": 2702, "nodeType": "ExpressionStatement", - "src": "5049:121:84" + "src": "5045:121:5" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 8889, + "id": 2703, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "5187:4:84", + "src": "5183:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2538,45 +2502,45 @@ }, "value": "true" }, - "functionReturnParameters": 8866, - "id": 8890, + "functionReturnParameters": 2680, + "id": 2704, "nodeType": "Return", - "src": "5180:11:84" + "src": "5176:11:5" } ] }, "documentation": { - "id": 8855, + "id": 2669, "nodeType": "StructuredDocumentation", - "src": "4427:449:84", - "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20};\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`." + "src": "4416:456:5", + "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`." }, "functionSelector": "23b872dd", - "id": 8892, + "id": 2706, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "overrides": { - "id": 8863, + "id": 2677, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "4969:8:84" + "src": "4965:8:5" }, "parameters": { - "id": 8862, + "id": 2676, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8857, + "id": 2671, "mutability": "mutable", "name": "sender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8892, - "src": "4903:14:84", + "scope": 2706, + "src": "4899:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2584,10 +2548,10 @@ "typeString": "address" }, "typeName": { - "id": 8856, + "id": 2670, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4903:7:84", + "src": "4899:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2599,13 +2563,13 @@ }, { "constant": false, - "id": 8859, + "id": 2673, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8892, - "src": "4919:17:84", + "scope": 2706, + "src": "4915:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2613,10 +2577,10 @@ "typeString": "address" }, "typeName": { - "id": 8858, + "id": 2672, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4919:7:84", + "src": "4915:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2628,13 +2592,13 @@ }, { "constant": false, - "id": 8861, + "id": 2675, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8892, - "src": "4938:14:84", + "scope": 2706, + "src": "4934:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2642,10 +2606,10 @@ "typeString": "uint256" }, "typeName": { - "id": 8860, + "id": 2674, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4938:7:84", + "src": "4934:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2655,21 +2619,21 @@ "visibility": "internal" } ], - "src": "4902:51:84" + "src": "4898:51:5" }, "returnParameters": { - "id": 8866, + "id": 2680, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8865, + "id": 2679, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8892, - "src": "4987:4:84", + "scope": 2706, + "src": "4983:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2677,10 +2641,10 @@ "typeString": "bool" }, "typeName": { - "id": 8864, + "id": 2678, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4987:4:84", + "src": "4983:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2690,19 +2654,19 @@ "visibility": "internal" } ], - "src": "4986:6:84" + "src": "4982:6:5" }, - "scope": 9194, - "src": "4881:317:84", + "scope": 3008, + "src": "4877:317:5", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "body": { - "id": 8919, + "id": 2733, "nodeType": "Block", - "src": "5687:121:84", + "src": "5683:121:5", "statements": [ { "expression": { @@ -2713,18 +2677,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 8903, + "id": 2717, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "5706:10:84", + "referencedDeclaration": 3606, + "src": "5702:10:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 8904, + "id": 2718, "isConstant": false, "isLValue": false, "isPure": false, @@ -2732,7 +2696,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5706:12:84", + "src": "5702:12:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -2741,12 +2705,12 @@ }, { "argumentTypes": null, - "id": 8905, + "id": 2719, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8895, - "src": "5720:7:84", + "referencedDeclaration": 2709, + "src": "5716:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2757,12 +2721,12 @@ "arguments": [ { "argumentTypes": null, - "id": 8913, + "id": 2727, "name": "addedValue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8897, - "src": "5768:10:84", + "referencedDeclaration": 2711, + "src": "5764:10:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2782,35 +2746,35 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 8906, + "id": 2720, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8714, - "src": "5729:11:84", + "referencedDeclaration": 2528, + "src": "5725:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 8909, + "id": 2723, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 8907, + "id": 2721, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "5741:10:84", + "referencedDeclaration": 3606, + "src": "5737:10:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 8908, + "id": 2722, "isConstant": false, "isLValue": false, "isPure": false, @@ -2818,7 +2782,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5741:12:84", + "src": "5737:12:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -2830,21 +2794,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5729:25:84", + "src": "5725:25:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 8911, + "id": 2725, "indexExpression": { "argumentTypes": null, - "id": 8910, + "id": 2724, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8895, - "src": "5755:7:84", + "referencedDeclaration": 2709, + "src": "5751:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2855,27 +2819,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5729:34:84", + "src": "5725:34:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 8912, + "id": 2726, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 2254, - "src": "5729:38:84", + "referencedDeclaration": 2332, + "src": "5725:38:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 8914, + "id": 2728, "isConstant": false, "isLValue": false, "isPure": false, @@ -2883,7 +2847,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5729:50:84", + "src": "5725:50:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2906,18 +2870,18 @@ "typeString": "uint256" } ], - "id": 8902, + "id": 2716, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9171, - "src": "5697:8:84", + "referencedDeclaration": 2985, + "src": "5693:8:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 8915, + "id": 2729, "isConstant": false, "isLValue": false, "isPure": false, @@ -2925,29 +2889,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5697:83:84", + "src": "5693:83:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 8916, + "id": 2730, "nodeType": "ExpressionStatement", - "src": "5697:83:84" + "src": "5693:83:5" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 8917, + "id": 2731, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "5797:4:84", + "src": "5793:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2955,21 +2919,21 @@ }, "value": "true" }, - "functionReturnParameters": 8901, - "id": 8918, + "functionReturnParameters": 2715, + "id": 2732, "nodeType": "Return", - "src": "5790:11:84" + "src": "5786:11:5" } ] }, "documentation": { - "id": 8893, + "id": 2707, "nodeType": "StructuredDocumentation", - "src": "5204:384:84", + "src": "5200:384:5", "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." }, "functionSelector": "39509351", - "id": 8920, + "id": 2734, "implemented": true, "kind": "function", "modifiers": [], @@ -2977,18 +2941,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 8898, + "id": 2712, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8895, + "id": 2709, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8920, - "src": "5620:15:84", + "scope": 2734, + "src": "5616:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2996,10 +2960,10 @@ "typeString": "address" }, "typeName": { - "id": 8894, + "id": 2708, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5620:7:84", + "src": "5616:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3011,13 +2975,13 @@ }, { "constant": false, - "id": 8897, + "id": 2711, "mutability": "mutable", "name": "addedValue", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8920, - "src": "5637:18:84", + "scope": 2734, + "src": "5633:18:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3025,10 +2989,10 @@ "typeString": "uint256" }, "typeName": { - "id": 8896, + "id": 2710, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5637:7:84", + "src": "5633:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3038,21 +3002,21 @@ "visibility": "internal" } ], - "src": "5619:37:84" + "src": "5615:37:5" }, "returnParameters": { - "id": 8901, + "id": 2715, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8900, + "id": 2714, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8920, - "src": "5681:4:84", + "scope": 2734, + "src": "5677:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3060,10 +3024,10 @@ "typeString": "bool" }, "typeName": { - "id": 8899, + "id": 2713, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "5681:4:84", + "src": "5677:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3073,19 +3037,19 @@ "visibility": "internal" } ], - "src": "5680:6:84" + "src": "5676:6:5" }, - "scope": 9194, - "src": "5593:215:84", + "scope": 3008, + "src": "5589:215:5", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "body": { - "id": 8948, + "id": 2762, "nodeType": "Block", - "src": "6394:167:84", + "src": "6390:167:5", "statements": [ { "expression": { @@ -3096,18 +3060,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 8931, + "id": 2745, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "6413:10:84", + "referencedDeclaration": 3606, + "src": "6409:10:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 8932, + "id": 2746, "isConstant": false, "isLValue": false, "isPure": false, @@ -3115,7 +3079,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6413:12:84", + "src": "6409:12:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3124,12 +3088,12 @@ }, { "argumentTypes": null, - "id": 8933, + "id": 2747, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8923, - "src": "6427:7:84", + "referencedDeclaration": 2737, + "src": "6423:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3140,12 +3104,12 @@ "arguments": [ { "argumentTypes": null, - "id": 8941, + "id": 2755, "name": "subtractedValue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8925, - "src": "6475:15:84", + "referencedDeclaration": 2739, + "src": "6471:15:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3154,14 +3118,14 @@ { "argumentTypes": null, "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", - "id": 8942, + "id": 2756, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6492:39:84", + "src": "6488:39:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", @@ -3187,35 +3151,35 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 8934, + "id": 2748, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8714, - "src": "6436:11:84", + "referencedDeclaration": 2528, + "src": "6432:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 8937, + "id": 2751, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 8935, + "id": 2749, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "6448:10:84", + "referencedDeclaration": 3606, + "src": "6444:10:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 8936, + "id": 2750, "isConstant": false, "isLValue": false, "isPure": false, @@ -3223,7 +3187,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6448:12:84", + "src": "6444:12:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3235,21 +3199,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6436:25:84", + "src": "6432:25:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 8939, + "id": 2753, "indexExpression": { "argumentTypes": null, - "id": 8938, + "id": 2752, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8923, - "src": "6462:7:84", + "referencedDeclaration": 2737, + "src": "6458:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3260,27 +3224,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6436:34:84", + "src": "6432:34:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 8940, + "id": 2754, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 2299, - "src": "6436:38:84", + "referencedDeclaration": 2456, + "src": "6432:38:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 8943, + "id": 2757, "isConstant": false, "isLValue": false, "isPure": false, @@ -3288,7 +3252,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6436:96:84", + "src": "6432:96:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3311,18 +3275,18 @@ "typeString": "uint256" } ], - "id": 8930, + "id": 2744, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9171, - "src": "6404:8:84", + "referencedDeclaration": 2985, + "src": "6400:8:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 8944, + "id": 2758, "isConstant": false, "isLValue": false, "isPure": false, @@ -3330,29 +3294,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6404:129:84", + "src": "6400:129:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 8945, + "id": 2759, "nodeType": "ExpressionStatement", - "src": "6404:129:84" + "src": "6400:129:5" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 8946, + "id": 2760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "6550:4:84", + "src": "6546:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3360,21 +3324,21 @@ }, "value": "true" }, - "functionReturnParameters": 8929, - "id": 8947, + "functionReturnParameters": 2743, + "id": 2761, "nodeType": "Return", - "src": "6543:11:84" + "src": "6539:11:5" } ] }, "documentation": { - "id": 8921, + "id": 2735, "nodeType": "StructuredDocumentation", - "src": "5814:476:84", + "src": "5810:476:5", "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." }, "functionSelector": "a457c2d7", - "id": 8949, + "id": 2763, "implemented": true, "kind": "function", "modifiers": [], @@ -3382,18 +3346,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 8926, + "id": 2740, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8923, + "id": 2737, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8949, - "src": "6322:15:84", + "scope": 2763, + "src": "6318:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3401,10 +3365,10 @@ "typeString": "address" }, "typeName": { - "id": 8922, + "id": 2736, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6322:7:84", + "src": "6318:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3416,13 +3380,13 @@ }, { "constant": false, - "id": 8925, + "id": 2739, "mutability": "mutable", "name": "subtractedValue", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8949, - "src": "6339:23:84", + "scope": 2763, + "src": "6335:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3430,10 +3394,10 @@ "typeString": "uint256" }, "typeName": { - "id": 8924, + "id": 2738, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6339:7:84", + "src": "6335:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3443,21 +3407,21 @@ "visibility": "internal" } ], - "src": "6321:42:84" + "src": "6317:42:5" }, "returnParameters": { - "id": 8929, + "id": 2743, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8928, + "id": 2742, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 8949, - "src": "6388:4:84", + "scope": 2763, + "src": "6384:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3465,10 +3429,10 @@ "typeString": "bool" }, "typeName": { - "id": 8927, + "id": 2741, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "6388:4:84", + "src": "6384:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3478,19 +3442,19 @@ "visibility": "internal" } ], - "src": "6387:6:84" + "src": "6383:6:5" }, - "scope": 9194, - "src": "6295:266:84", + "scope": 3008, + "src": "6291:266:5", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "body": { - "id": 9014, + "id": 2828, "nodeType": "Block", - "src": "7122:443:84", + "src": "7118:443:5", "statements": [ { "expression": { @@ -3502,19 +3466,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 8965, + "id": 2779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 8960, + "id": 2774, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8952, - "src": "7140:6:84", + "referencedDeclaration": 2766, + "src": "7136:6:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3528,14 +3492,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 8963, + "id": 2777, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7158:1:84", + "src": "7154:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3551,29 +3515,29 @@ "typeString": "int_const 0" } ], - "id": 8962, + "id": 2776, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7150:7:84", + "src": "7146:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 8961, + "id": 2775, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7150:7:84", + "src": "7146:7:5", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 8964, + "id": 2778, "isConstant": false, "isLValue": false, "isPure": true, @@ -3581,14 +3545,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7150:10:84", + "src": "7146:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "7140:20:84", + "src": "7136:20:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3597,14 +3561,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", - "id": 8966, + "id": 2780, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7162:39:84", + "src": "7158:39:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", @@ -3624,18 +3588,18 @@ "typeString": "literal_string \"ERC20: transfer from the zero address\"" } ], - "id": 8959, + "id": 2773, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "7132:7:84", + "src": "7128:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 8967, + "id": 2781, "isConstant": false, "isLValue": false, "isPure": false, @@ -3643,16 +3607,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7132:70:84", + "src": "7128:70:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 8968, + "id": 2782, "nodeType": "ExpressionStatement", - "src": "7132:70:84" + "src": "7128:70:5" }, { "expression": { @@ -3664,19 +3628,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 8975, + "id": 2789, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 8970, + "id": 2784, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8954, - "src": "7220:9:84", + "referencedDeclaration": 2768, + "src": "7216:9:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3690,14 +3654,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 8973, + "id": 2787, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7241:1:84", + "src": "7237:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3713,29 +3677,29 @@ "typeString": "int_const 0" } ], - "id": 8972, + "id": 2786, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7233:7:84", + "src": "7229:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 8971, + "id": 2785, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7233:7:84", + "src": "7229:7:5", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 8974, + "id": 2788, "isConstant": false, "isLValue": false, "isPure": true, @@ -3743,14 +3707,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7233:10:84", + "src": "7229:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "7220:23:84", + "src": "7216:23:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3759,14 +3723,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", - "id": 8976, + "id": 2790, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7245:37:84", + "src": "7241:37:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", @@ -3786,18 +3750,18 @@ "typeString": "literal_string \"ERC20: transfer to the zero address\"" } ], - "id": 8969, + "id": 2783, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "7212:7:84", + "src": "7208:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 8977, + "id": 2791, "isConstant": false, "isLValue": false, "isPure": false, @@ -3805,16 +3769,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7212:71:84", + "src": "7208:71:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 8978, + "id": 2792, "nodeType": "ExpressionStatement", - "src": "7212:71:84" + "src": "7208:71:5" }, { "expression": { @@ -3822,12 +3786,12 @@ "arguments": [ { "argumentTypes": null, - "id": 8980, + "id": 2794, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8952, - "src": "7315:6:84", + "referencedDeclaration": 2766, + "src": "7311:6:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3835,12 +3799,12 @@ }, { "argumentTypes": null, - "id": 8981, + "id": 2795, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8954, - "src": "7323:9:84", + "referencedDeclaration": 2768, + "src": "7319:9:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3848,12 +3812,12 @@ }, { "argumentTypes": null, - "id": 8982, + "id": 2796, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8956, - "src": "7334:6:84", + "referencedDeclaration": 2770, + "src": "7330:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3875,18 +3839,18 @@ "typeString": "uint256" } ], - "id": 8979, + "id": 2793, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9193, - "src": "7294:20:84", + "referencedDeclaration": 3007, + "src": "7290:20:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 8983, + "id": 2797, "isConstant": false, "isLValue": false, "isPure": false, @@ -3894,21 +3858,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7294:47:84", + "src": "7290:47:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 8984, + "id": 2798, "nodeType": "ExpressionStatement", - "src": "7294:47:84" + "src": "7290:47:5" }, { "expression": { "argumentTypes": null, - "id": 8995, + "id": 2809, "isConstant": false, "isLValue": false, "isPure": false, @@ -3917,26 +3881,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 8985, + "id": 2799, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8708, - "src": "7352:9:84", + "referencedDeclaration": 2522, + "src": "7348:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 8987, + "id": 2801, "indexExpression": { "argumentTypes": null, - "id": 8986, + "id": 2800, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8952, - "src": "7362:6:84", + "referencedDeclaration": 2766, + "src": "7358:6:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3947,7 +3911,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7352:17:84", + "src": "7348:17:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3960,12 +3924,12 @@ "arguments": [ { "argumentTypes": null, - "id": 8992, + "id": 2806, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8956, - "src": "7394:6:84", + "referencedDeclaration": 2770, + "src": "7390:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3974,14 +3938,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", - "id": 8993, + "id": 2807, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7402:40:84", + "src": "7398:40:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", @@ -4005,26 +3969,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 8988, + "id": 2802, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8708, - "src": "7372:9:84", + "referencedDeclaration": 2522, + "src": "7368:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 8990, + "id": 2804, "indexExpression": { "argumentTypes": null, - "id": 8989, + "id": 2803, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8952, - "src": "7382:6:84", + "referencedDeclaration": 2766, + "src": "7378:6:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4035,27 +3999,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7372:17:84", + "src": "7368:17:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 8991, + "id": 2805, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 2299, - "src": "7372:21:84", + "referencedDeclaration": 2456, + "src": "7368:21:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 8994, + "id": 2808, "isConstant": false, "isLValue": false, "isPure": false, @@ -4063,27 +4027,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7372:71:84", + "src": "7368:71:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7352:91:84", + "src": "7348:91:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 8996, + "id": 2810, "nodeType": "ExpressionStatement", - "src": "7352:91:84" + "src": "7348:91:5" }, { "expression": { "argumentTypes": null, - "id": 9006, + "id": 2820, "isConstant": false, "isLValue": false, "isPure": false, @@ -4092,26 +4056,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 8997, + "id": 2811, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8708, - "src": "7453:9:84", + "referencedDeclaration": 2522, + "src": "7449:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 8999, + "id": 2813, "indexExpression": { "argumentTypes": null, - "id": 8998, + "id": 2812, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8954, - "src": "7463:9:84", + "referencedDeclaration": 2768, + "src": "7459:9:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4122,7 +4086,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7453:20:84", + "src": "7449:20:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4135,12 +4099,12 @@ "arguments": [ { "argumentTypes": null, - "id": 9004, + "id": 2818, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8956, - "src": "7501:6:84", + "referencedDeclaration": 2770, + "src": "7497:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4158,26 +4122,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 9000, + "id": 2814, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8708, - "src": "7476:9:84", + "referencedDeclaration": 2522, + "src": "7472:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 9002, + "id": 2816, "indexExpression": { "argumentTypes": null, - "id": 9001, + "id": 2815, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8954, - "src": "7486:9:84", + "referencedDeclaration": 2768, + "src": "7482:9:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4188,27 +4152,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7476:20:84", + "src": "7472:20:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 9003, + "id": 2817, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 2254, - "src": "7476:24:84", + "referencedDeclaration": 2332, + "src": "7472:24:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 9005, + "id": 2819, "isConstant": false, "isLValue": false, "isPure": false, @@ -4216,22 +4180,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7476:32:84", + "src": "7472:32:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7453:55:84", + "src": "7449:55:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 9007, + "id": 2821, "nodeType": "ExpressionStatement", - "src": "7453:55:84" + "src": "7449:55:5" }, { "eventCall": { @@ -4239,12 +4203,12 @@ "arguments": [ { "argumentTypes": null, - "id": 9009, + "id": 2823, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8952, - "src": "7532:6:84", + "referencedDeclaration": 2766, + "src": "7528:6:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4252,12 +4216,12 @@ }, { "argumentTypes": null, - "id": 9010, + "id": 2824, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8954, - "src": "7540:9:84", + "referencedDeclaration": 2768, + "src": "7536:9:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4265,12 +4229,12 @@ }, { "argumentTypes": null, - "id": 9011, + "id": 2825, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8956, - "src": "7551:6:84", + "referencedDeclaration": 2770, + "src": "7547:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4292,18 +4256,18 @@ "typeString": "uint256" } ], - "id": 9008, + "id": 2822, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9763, - "src": "7523:8:84", + "referencedDeclaration": 3076, + "src": "7519:8:5", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 9012, + "id": 2826, "isConstant": false, "isLValue": false, "isPure": false, @@ -4311,26 +4275,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7523:35:84", + "src": "7519:35:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 9013, + "id": 2827, "nodeType": "EmitStatement", - "src": "7518:40:84" + "src": "7514:40:5" } ] }, "documentation": { - "id": 8950, + "id": 2764, "nodeType": "StructuredDocumentation", - "src": "6567:463:84", + "src": "6563:463:5", "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`." }, - "id": 9015, + "id": 2829, "implemented": true, "kind": "function", "modifiers": [], @@ -4338,18 +4302,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 8957, + "id": 2771, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8952, + "id": 2766, "mutability": "mutable", "name": "sender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9015, - "src": "7054:14:84", + "scope": 2829, + "src": "7050:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4357,10 +4321,10 @@ "typeString": "address" }, "typeName": { - "id": 8951, + "id": 2765, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7054:7:84", + "src": "7050:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4372,13 +4336,13 @@ }, { "constant": false, - "id": 8954, + "id": 2768, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9015, - "src": "7070:17:84", + "scope": 2829, + "src": "7066:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4386,10 +4350,10 @@ "typeString": "address" }, "typeName": { - "id": 8953, + "id": 2767, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7070:7:84", + "src": "7066:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4401,13 +4365,13 @@ }, { "constant": false, - "id": 8956, + "id": 2770, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9015, - "src": "7089:14:84", + "scope": 2829, + "src": "7085:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4415,10 +4379,10 @@ "typeString": "uint256" }, "typeName": { - "id": 8955, + "id": 2769, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7089:7:84", + "src": "7085:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4428,25 +4392,25 @@ "visibility": "internal" } ], - "src": "7053:51:84" + "src": "7049:51:5" }, "returnParameters": { - "id": 8958, + "id": 2772, "nodeType": "ParameterList", "parameters": [], - "src": "7122:0:84" + "src": "7118:0:5" }, - "scope": 9194, - "src": "7035:530:84", + "scope": 3008, + "src": "7031:530:5", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { - "id": 9069, + "id": 2883, "nodeType": "Block", - "src": "7900:305:84", + "src": "7897:305:5", "statements": [ { "expression": { @@ -4458,19 +4422,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 9029, + "id": 2843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 9024, + "id": 2838, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9018, - "src": "7918:7:84", + "referencedDeclaration": 2832, + "src": "7915:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4484,14 +4448,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 9027, + "id": 2841, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7937:1:84", + "src": "7934:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4507,29 +4471,29 @@ "typeString": "int_const 0" } ], - "id": 9026, + "id": 2840, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7929:7:84", + "src": "7926:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 9025, + "id": 2839, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7929:7:84", + "src": "7926:7:5", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 9028, + "id": 2842, "isConstant": false, "isLValue": false, "isPure": true, @@ -4537,14 +4501,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7929:10:84", + "src": "7926:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "7918:21:84", + "src": "7915:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4553,14 +4517,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", - "id": 9030, + "id": 2844, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7941:33:84", + "src": "7938:33:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", @@ -4580,18 +4544,18 @@ "typeString": "literal_string \"ERC20: mint to the zero address\"" } ], - "id": 9023, + "id": 2837, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "7910:7:84", + "src": "7907:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 9031, + "id": 2845, "isConstant": false, "isLValue": false, "isPure": false, @@ -4599,16 +4563,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7910:65:84", + "src": "7907:65:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 9032, + "id": 2846, "nodeType": "ExpressionStatement", - "src": "7910:65:84" + "src": "7907:65:5" }, { "expression": { @@ -4620,14 +4584,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 9036, + "id": 2850, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8015:1:84", + "src": "8012:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4643,29 +4607,29 @@ "typeString": "int_const 0" } ], - "id": 9035, + "id": 2849, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8007:7:84", + "src": "8004:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 9034, + "id": 2848, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8007:7:84", + "src": "8004:7:5", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 9037, + "id": 2851, "isConstant": false, "isLValue": false, "isPure": true, @@ -4673,7 +4637,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8007:10:84", + "src": "8004:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -4682,12 +4646,12 @@ }, { "argumentTypes": null, - "id": 9038, + "id": 2852, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9018, - "src": "8019:7:84", + "referencedDeclaration": 2832, + "src": "8016:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4695,12 +4659,12 @@ }, { "argumentTypes": null, - "id": 9039, + "id": 2853, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9020, - "src": "8028:6:84", + "referencedDeclaration": 2834, + "src": "8025:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4722,18 +4686,18 @@ "typeString": "uint256" } ], - "id": 9033, + "id": 2847, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9193, - "src": "7986:20:84", + "referencedDeclaration": 3007, + "src": "7983:20:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 9040, + "id": 2854, "isConstant": false, "isLValue": false, "isPure": false, @@ -4741,33 +4705,33 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7986:49:84", + "src": "7983:49:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 9041, + "id": 2855, "nodeType": "ExpressionStatement", - "src": "7986:49:84" + "src": "7983:49:5" }, { "expression": { "argumentTypes": null, - "id": 9047, + "id": 2861, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 9042, + "id": 2856, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8716, - "src": "8046:12:84", + "referencedDeclaration": 2530, + "src": "8043:12:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4780,12 +4744,12 @@ "arguments": [ { "argumentTypes": null, - "id": 9045, + "id": 2859, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9020, - "src": "8078:6:84", + "referencedDeclaration": 2834, + "src": "8075:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4801,32 +4765,32 @@ ], "expression": { "argumentTypes": null, - "id": 9043, + "id": 2857, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8716, - "src": "8061:12:84", + "referencedDeclaration": 2530, + "src": "8058:12:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 9044, + "id": 2858, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 2254, - "src": "8061:16:84", + "referencedDeclaration": 2332, + "src": "8058:16:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 9046, + "id": 2860, "isConstant": false, "isLValue": false, "isPure": false, @@ -4834,27 +4798,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8061:24:84", + "src": "8058:24:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8046:39:84", + "src": "8043:39:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 9048, + "id": 2862, "nodeType": "ExpressionStatement", - "src": "8046:39:84" + "src": "8043:39:5" }, { "expression": { "argumentTypes": null, - "id": 9058, + "id": 2872, "isConstant": false, "isLValue": false, "isPure": false, @@ -4863,26 +4827,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 9049, + "id": 2863, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8708, - "src": "8095:9:84", + "referencedDeclaration": 2522, + "src": "8092:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 9051, + "id": 2865, "indexExpression": { "argumentTypes": null, - "id": 9050, + "id": 2864, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9018, - "src": "8105:7:84", + "referencedDeclaration": 2832, + "src": "8102:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4893,7 +4857,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "8095:18:84", + "src": "8092:18:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4906,12 +4870,12 @@ "arguments": [ { "argumentTypes": null, - "id": 9056, + "id": 2870, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9020, - "src": "8139:6:84", + "referencedDeclaration": 2834, + "src": "8136:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4929,26 +4893,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 9052, + "id": 2866, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8708, - "src": "8116:9:84", + "referencedDeclaration": 2522, + "src": "8113:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 9054, + "id": 2868, "indexExpression": { "argumentTypes": null, - "id": 9053, + "id": 2867, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9018, - "src": "8126:7:84", + "referencedDeclaration": 2832, + "src": "8123:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4959,27 +4923,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8116:18:84", + "src": "8113:18:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 9055, + "id": 2869, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 2254, - "src": "8116:22:84", + "referencedDeclaration": 2332, + "src": "8113:22:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 9057, + "id": 2871, "isConstant": false, "isLValue": false, "isPure": false, @@ -4987,22 +4951,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8116:30:84", + "src": "8113:30:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8095:51:84", + "src": "8092:51:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 9059, + "id": 2873, "nodeType": "ExpressionStatement", - "src": "8095:51:84" + "src": "8092:51:5" }, { "eventCall": { @@ -5014,14 +4978,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 9063, + "id": 2877, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8178:1:84", + "src": "8175:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5037,29 +5001,29 @@ "typeString": "int_const 0" } ], - "id": 9062, + "id": 2876, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8170:7:84", + "src": "8167:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 9061, + "id": 2875, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8170:7:84", + "src": "8167:7:5", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 9064, + "id": 2878, "isConstant": false, "isLValue": false, "isPure": true, @@ -5067,7 +5031,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8170:10:84", + "src": "8167:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -5076,12 +5040,12 @@ }, { "argumentTypes": null, - "id": 9065, + "id": 2879, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9018, - "src": "8182:7:84", + "referencedDeclaration": 2832, + "src": "8179:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5089,12 +5053,12 @@ }, { "argumentTypes": null, - "id": 9066, + "id": 2880, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9020, - "src": "8191:6:84", + "referencedDeclaration": 2834, + "src": "8188:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5116,18 +5080,18 @@ "typeString": "uint256" } ], - "id": 9060, + "id": 2874, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9763, - "src": "8161:8:84", + "referencedDeclaration": 3076, + "src": "8158:8:5", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 9067, + "id": 2881, "isConstant": false, "isLValue": false, "isPure": false, @@ -5135,26 +5099,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8161:37:84", + "src": "8158:37:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 9068, + "id": 2882, "nodeType": "EmitStatement", - "src": "8156:42:84" + "src": "8153:42:5" } ] }, "documentation": { - "id": 9016, + "id": 2830, "nodeType": "StructuredDocumentation", - "src": "7571:259:84", - "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements\n - `to` cannot be the zero address." + "src": "7567:260:5", + "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `to` cannot be the zero address." }, - "id": 9070, + "id": 2884, "implemented": true, "kind": "function", "modifiers": [], @@ -5162,18 +5126,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 9021, + "id": 2835, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 9018, + "id": 2832, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9070, - "src": "7850:15:84", + "scope": 2884, + "src": "7847:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5181,10 +5145,10 @@ "typeString": "address" }, "typeName": { - "id": 9017, + "id": 2831, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7850:7:84", + "src": "7847:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5196,13 +5160,13 @@ }, { "constant": false, - "id": 9020, + "id": 2834, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9070, - "src": "7867:14:84", + "scope": 2884, + "src": "7864:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5210,10 +5174,10 @@ "typeString": "uint256" }, "typeName": { - "id": 9019, + "id": 2833, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7867:7:84", + "src": "7864:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5223,25 +5187,25 @@ "visibility": "internal" } ], - "src": "7849:33:84" + "src": "7846:33:5" }, "returnParameters": { - "id": 9022, + "id": 2836, "nodeType": "ParameterList", "parameters": [], - "src": "7900:0:84" + "src": "7897:0:5" }, - "scope": 9194, - "src": "7835:370:84", + "scope": 3008, + "src": "7832:370:5", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { - "id": 9125, + "id": 2939, "nodeType": "Block", - "src": "8589:345:84", + "src": "8587:345:5", "statements": [ { "expression": { @@ -5253,19 +5217,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 9084, + "id": 2898, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 9079, + "id": 2893, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9073, - "src": "8607:7:84", + "referencedDeclaration": 2887, + "src": "8605:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5279,14 +5243,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 9082, + "id": 2896, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8626:1:84", + "src": "8624:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5302,29 +5266,29 @@ "typeString": "int_const 0" } ], - "id": 9081, + "id": 2895, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8618:7:84", + "src": "8616:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 9080, + "id": 2894, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8618:7:84", + "src": "8616:7:5", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 9083, + "id": 2897, "isConstant": false, "isLValue": false, "isPure": true, @@ -5332,14 +5296,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8618:10:84", + "src": "8616:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "8607:21:84", + "src": "8605:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5348,14 +5312,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", - "id": 9085, + "id": 2899, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8630:35:84", + "src": "8628:35:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", @@ -5375,18 +5339,18 @@ "typeString": "literal_string \"ERC20: burn from the zero address\"" } ], - "id": 9078, + "id": 2892, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "8599:7:84", + "src": "8597:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 9086, + "id": 2900, "isConstant": false, "isLValue": false, "isPure": false, @@ -5394,16 +5358,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8599:67:84", + "src": "8597:67:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 9087, + "id": 2901, "nodeType": "ExpressionStatement", - "src": "8599:67:84" + "src": "8597:67:5" }, { "expression": { @@ -5411,12 +5375,12 @@ "arguments": [ { "argumentTypes": null, - "id": 9089, + "id": 2903, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9073, - "src": "8698:7:84", + "referencedDeclaration": 2887, + "src": "8696:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5428,14 +5392,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 9092, + "id": 2906, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8715:1:84", + "src": "8713:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5451,29 +5415,29 @@ "typeString": "int_const 0" } ], - "id": 9091, + "id": 2905, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8707:7:84", + "src": "8705:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 9090, + "id": 2904, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8707:7:84", + "src": "8705:7:5", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 9093, + "id": 2907, "isConstant": false, "isLValue": false, "isPure": true, @@ -5481,7 +5445,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8707:10:84", + "src": "8705:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -5490,12 +5454,12 @@ }, { "argumentTypes": null, - "id": 9094, + "id": 2908, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9075, - "src": "8719:6:84", + "referencedDeclaration": 2889, + "src": "8717:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5517,18 +5481,18 @@ "typeString": "uint256" } ], - "id": 9088, + "id": 2902, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9193, - "src": "8677:20:84", + "referencedDeclaration": 3007, + "src": "8675:20:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 9095, + "id": 2909, "isConstant": false, "isLValue": false, "isPure": false, @@ -5536,21 +5500,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8677:49:84", + "src": "8675:49:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 9096, + "id": 2910, "nodeType": "ExpressionStatement", - "src": "8677:49:84" + "src": "8675:49:5" }, { "expression": { "argumentTypes": null, - "id": 9107, + "id": 2921, "isConstant": false, "isLValue": false, "isPure": false, @@ -5559,26 +5523,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 9097, + "id": 2911, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8708, - "src": "8737:9:84", + "referencedDeclaration": 2522, + "src": "8735:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 9099, + "id": 2913, "indexExpression": { "argumentTypes": null, - "id": 9098, + "id": 2912, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9073, - "src": "8747:7:84", + "referencedDeclaration": 2887, + "src": "8745:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5589,7 +5553,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "8737:18:84", + "src": "8735:18:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5602,12 +5566,12 @@ "arguments": [ { "argumentTypes": null, - "id": 9104, + "id": 2918, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9075, - "src": "8781:6:84", + "referencedDeclaration": 2889, + "src": "8779:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5616,14 +5580,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", - "id": 9105, + "id": 2919, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8789:36:84", + "src": "8787:36:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", @@ -5647,26 +5611,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 9100, + "id": 2914, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8708, - "src": "8758:9:84", + "referencedDeclaration": 2522, + "src": "8756:9:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 9102, + "id": 2916, "indexExpression": { "argumentTypes": null, - "id": 9101, + "id": 2915, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9073, - "src": "8768:7:84", + "referencedDeclaration": 2887, + "src": "8766:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5677,27 +5641,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8758:18:84", + "src": "8756:18:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 9103, + "id": 2917, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 2299, - "src": "8758:22:84", + "referencedDeclaration": 2456, + "src": "8756:22:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 9106, + "id": 2920, "isConstant": false, "isLValue": false, "isPure": false, @@ -5705,39 +5669,39 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8758:68:84", + "src": "8756:68:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8737:89:84", + "src": "8735:89:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 9108, + "id": 2922, "nodeType": "ExpressionStatement", - "src": "8737:89:84" + "src": "8735:89:5" }, { "expression": { "argumentTypes": null, - "id": 9114, + "id": 2928, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 9109, + "id": 2923, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8716, - "src": "8836:12:84", + "referencedDeclaration": 2530, + "src": "8834:12:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5750,12 +5714,12 @@ "arguments": [ { "argumentTypes": null, - "id": 9112, + "id": 2926, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9075, - "src": "8868:6:84", + "referencedDeclaration": 2889, + "src": "8866:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5771,32 +5735,32 @@ ], "expression": { "argumentTypes": null, - "id": 9110, + "id": 2924, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8716, - "src": "8851:12:84", + "referencedDeclaration": 2530, + "src": "8849:12:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 9111, + "id": 2925, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 2271, - "src": "8851:16:84", + "referencedDeclaration": 2354, + "src": "8849:16:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 9113, + "id": 2927, "isConstant": false, "isLValue": false, "isPure": false, @@ -5804,22 +5768,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8851:24:84", + "src": "8849:24:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8836:39:84", + "src": "8834:39:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 9115, + "id": 2929, "nodeType": "ExpressionStatement", - "src": "8836:39:84" + "src": "8834:39:5" }, { "eventCall": { @@ -5827,12 +5791,12 @@ "arguments": [ { "argumentTypes": null, - "id": 9117, + "id": 2931, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9073, - "src": "8899:7:84", + "referencedDeclaration": 2887, + "src": "8897:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5844,14 +5808,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 9120, + "id": 2934, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8916:1:84", + "src": "8914:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5867,29 +5831,29 @@ "typeString": "int_const 0" } ], - "id": 9119, + "id": 2933, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8908:7:84", + "src": "8906:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 9118, + "id": 2932, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8908:7:84", + "src": "8906:7:5", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 9121, + "id": 2935, "isConstant": false, "isLValue": false, "isPure": true, @@ -5897,7 +5861,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8908:10:84", + "src": "8906:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -5906,12 +5870,12 @@ }, { "argumentTypes": null, - "id": 9122, + "id": 2936, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9075, - "src": "8920:6:84", + "referencedDeclaration": 2889, + "src": "8918:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5933,18 +5897,18 @@ "typeString": "uint256" } ], - "id": 9116, + "id": 2930, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9763, - "src": "8890:8:84", + "referencedDeclaration": 3076, + "src": "8888:8:5", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 9123, + "id": 2937, "isConstant": false, "isLValue": false, "isPure": false, @@ -5952,26 +5916,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8890:37:84", + "src": "8888:37:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 9124, + "id": 2938, "nodeType": "EmitStatement", - "src": "8885:42:84" + "src": "8883:42:5" } ] }, "documentation": { - "id": 9071, + "id": 2885, "nodeType": "StructuredDocumentation", - "src": "8211:308:84", - "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." + "src": "8208:309:5", + "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." }, - "id": 9126, + "id": 2940, "implemented": true, "kind": "function", "modifiers": [], @@ -5979,18 +5943,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 9076, + "id": 2890, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 9073, + "id": 2887, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9126, - "src": "8539:15:84", + "scope": 2940, + "src": "8537:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5998,10 +5962,10 @@ "typeString": "address" }, "typeName": { - "id": 9072, + "id": 2886, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8539:7:84", + "src": "8537:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6013,13 +5977,13 @@ }, { "constant": false, - "id": 9075, + "id": 2889, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9126, - "src": "8556:14:84", + "scope": 2940, + "src": "8554:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6027,10 +5991,10 @@ "typeString": "uint256" }, "typeName": { - "id": 9074, + "id": 2888, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "8556:7:84", + "src": "8554:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6040,25 +6004,25 @@ "visibility": "internal" } ], - "src": "8538:33:84" + "src": "8536:33:5" }, "returnParameters": { - "id": 9077, + "id": 2891, "nodeType": "ParameterList", "parameters": [], - "src": "8589:0:84" + "src": "8587:0:5" }, - "scope": 9194, - "src": "8524:410:84", + "scope": 3008, + "src": "8522:410:5", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { - "id": 9170, + "id": 2984, "nodeType": "Block", - "src": "9442:257:84", + "src": "9438:257:5", "statements": [ { "expression": { @@ -6070,19 +6034,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 9142, + "id": 2956, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 9137, + "id": 2951, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9129, - "src": "9460:5:84", + "referencedDeclaration": 2943, + "src": "9456:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6096,14 +6060,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 9140, + "id": 2954, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9477:1:84", + "src": "9473:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6119,29 +6083,29 @@ "typeString": "int_const 0" } ], - "id": 9139, + "id": 2953, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9469:7:84", + "src": "9465:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 9138, + "id": 2952, "name": "address", "nodeType": "ElementaryTypeName", - "src": "9469:7:84", + "src": "9465:7:5", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 9141, + "id": 2955, "isConstant": false, "isLValue": false, "isPure": true, @@ -6149,14 +6113,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9469:10:84", + "src": "9465:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "9460:19:84", + "src": "9456:19:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6165,14 +6129,14 @@ { "argumentTypes": null, "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", - "id": 9143, + "id": 2957, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9481:38:84", + "src": "9477:38:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", @@ -6192,18 +6156,18 @@ "typeString": "literal_string \"ERC20: approve from the zero address\"" } ], - "id": 9136, + "id": 2950, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "9452:7:84", + "src": "9448:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 9144, + "id": 2958, "isConstant": false, "isLValue": false, "isPure": false, @@ -6211,16 +6175,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9452:68:84", + "src": "9448:68:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 9145, + "id": 2959, "nodeType": "ExpressionStatement", - "src": "9452:68:84" + "src": "9448:68:5" }, { "expression": { @@ -6232,19 +6196,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 9152, + "id": 2966, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 9147, + "id": 2961, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9131, - "src": "9538:7:84", + "referencedDeclaration": 2945, + "src": "9534:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6258,14 +6222,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 9150, + "id": 2964, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9557:1:84", + "src": "9553:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6281,29 +6245,29 @@ "typeString": "int_const 0" } ], - "id": 9149, + "id": 2963, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9549:7:84", + "src": "9545:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 9148, + "id": 2962, "name": "address", "nodeType": "ElementaryTypeName", - "src": "9549:7:84", + "src": "9545:7:5", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 9151, + "id": 2965, "isConstant": false, "isLValue": false, "isPure": true, @@ -6311,14 +6275,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9549:10:84", + "src": "9545:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "9538:21:84", + "src": "9534:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6327,14 +6291,14 @@ { "argumentTypes": null, "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", - "id": 9153, + "id": 2967, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9561:36:84", + "src": "9557:36:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", @@ -6354,18 +6318,18 @@ "typeString": "literal_string \"ERC20: approve to the zero address\"" } ], - "id": 9146, + "id": 2960, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "9530:7:84", + "src": "9526:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 9154, + "id": 2968, "isConstant": false, "isLValue": false, "isPure": false, @@ -6373,21 +6337,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9530:68:84", + "src": "9526:68:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 9155, + "id": 2969, "nodeType": "ExpressionStatement", - "src": "9530:68:84" + "src": "9526:68:5" }, { "expression": { "argumentTypes": null, - "id": 9162, + "id": 2976, "isConstant": false, "isLValue": false, "isPure": false, @@ -6398,26 +6362,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 9156, + "id": 2970, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8714, - "src": "9609:11:84", + "referencedDeclaration": 2528, + "src": "9605:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 9159, + "id": 2973, "indexExpression": { "argumentTypes": null, - "id": 9157, + "id": 2971, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9129, - "src": "9621:5:84", + "referencedDeclaration": 2943, + "src": "9617:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6428,21 +6392,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "9609:18:84", + "src": "9605:18:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 9160, + "id": 2974, "indexExpression": { "argumentTypes": null, - "id": 9158, + "id": 2972, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9131, - "src": "9628:7:84", + "referencedDeclaration": 2945, + "src": "9624:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6453,7 +6417,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "9609:27:84", + "src": "9605:27:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6463,26 +6427,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 9161, + "id": 2975, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9133, - "src": "9639:6:84", + "referencedDeclaration": 2947, + "src": "9635:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "9609:36:84", + "src": "9605:36:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 9163, + "id": 2977, "nodeType": "ExpressionStatement", - "src": "9609:36:84" + "src": "9605:36:5" }, { "eventCall": { @@ -6490,12 +6454,12 @@ "arguments": [ { "argumentTypes": null, - "id": 9165, + "id": 2979, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9129, - "src": "9669:5:84", + "referencedDeclaration": 2943, + "src": "9665:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6503,12 +6467,12 @@ }, { "argumentTypes": null, - "id": 9166, + "id": 2980, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9131, - "src": "9676:7:84", + "referencedDeclaration": 2945, + "src": "9672:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6516,12 +6480,12 @@ }, { "argumentTypes": null, - "id": 9167, + "id": 2981, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9133, - "src": "9685:6:84", + "referencedDeclaration": 2947, + "src": "9681:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6543,18 +6507,18 @@ "typeString": "uint256" } ], - "id": 9164, + "id": 2978, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9772, - "src": "9660:8:84", + "referencedDeclaration": 3085, + "src": "9656:8:5", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 9168, + "id": 2982, "isConstant": false, "isLValue": false, "isPure": false, @@ -6562,26 +6526,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9660:32:84", + "src": "9656:32:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 9169, + "id": 2983, "nodeType": "EmitStatement", - "src": "9655:37:84" + "src": "9651:37:5" } ] }, "documentation": { - "id": 9127, + "id": 2941, "nodeType": "StructuredDocumentation", - "src": "8940:414:84", - "text": " @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n This is internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." + "src": "8938:412:5", + "text": " @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." }, - "id": 9171, + "id": 2985, "implemented": true, "kind": "function", "modifiers": [], @@ -6589,18 +6553,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 9134, + "id": 2948, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 9129, + "id": 2943, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9171, - "src": "9377:13:84", + "scope": 2985, + "src": "9373:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6608,10 +6572,10 @@ "typeString": "address" }, "typeName": { - "id": 9128, + "id": 2942, "name": "address", "nodeType": "ElementaryTypeName", - "src": "9377:7:84", + "src": "9373:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6623,13 +6587,13 @@ }, { "constant": false, - "id": 9131, + "id": 2945, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9171, - "src": "9392:15:84", + "scope": 2985, + "src": "9388:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6637,10 +6601,10 @@ "typeString": "address" }, "typeName": { - "id": 9130, + "id": 2944, "name": "address", "nodeType": "ElementaryTypeName", - "src": "9392:7:84", + "src": "9388:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6652,13 +6616,13 @@ }, { "constant": false, - "id": 9133, + "id": 2947, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9171, - "src": "9409:14:84", + "scope": 2985, + "src": "9405:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6666,10 +6630,10 @@ "typeString": "uint256" }, "typeName": { - "id": 9132, + "id": 2946, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "9409:7:84", + "src": "9405:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6679,42 +6643,42 @@ "visibility": "internal" } ], - "src": "9376:48:84" + "src": "9372:48:5" }, "returnParameters": { - "id": 9135, + "id": 2949, "nodeType": "ParameterList", "parameters": [], - "src": "9442:0:84" + "src": "9438:0:5" }, - "scope": 9194, - "src": "9359:340:84", + "scope": 3008, + "src": "9355:340:5", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { - "id": 9181, + "id": 2995, "nodeType": "Block", - "src": "10072:38:84", + "src": "10076:38:5", "statements": [ { "expression": { "argumentTypes": null, - "id": 9179, + "id": 2993, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 9177, + "id": 2991, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8722, - "src": "10082:9:84", + "referencedDeclaration": 2536, + "src": "10086:9:5", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6724,36 +6688,36 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 9178, + "id": 2992, "name": "decimals_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9174, - "src": "10094:9:84", + "referencedDeclaration": 2988, + "src": "10098:9:5", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "10082:21:84", + "src": "10086:21:5", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 9180, + "id": 2994, "nodeType": "ExpressionStatement", - "src": "10082:21:84" + "src": "10086:21:5" } ] }, "documentation": { - "id": 9172, + "id": 2986, "nodeType": "StructuredDocumentation", - "src": "9705:312:84", + "src": "9701:312:5", "text": " @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does." }, - "id": 9182, + "id": 2996, "implemented": true, "kind": "function", "modifiers": [], @@ -6761,18 +6725,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 9175, + "id": 2989, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 9174, + "id": 2988, "mutability": "mutable", "name": "decimals_", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9182, - "src": "10046:15:84", + "scope": 2996, + "src": "10042:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6780,10 +6744,10 @@ "typeString": "uint8" }, "typeName": { - "id": 9173, + "id": 2987, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "10046:5:84", + "src": "10042:5:5", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6793,34 +6757,34 @@ "visibility": "internal" } ], - "src": "10045:17:84" + "src": "10041:17:5" }, "returnParameters": { - "id": 9176, + "id": 2990, "nodeType": "ParameterList", "parameters": [], - "src": "10072:0:84" + "src": "10076:0:5" }, - "scope": 9194, - "src": "10022:88:84", + "scope": 3008, + "src": "10018:96:5", "stateMutability": "nonpayable", - "virtual": false, + "virtual": true, "visibility": "internal" }, { "body": { - "id": 9192, + "id": 3006, "nodeType": "Block", - "src": "10786:3:84", + "src": "10790:3:5", "statements": [] }, "documentation": { - "id": 9183, + "id": 2997, "nodeType": "StructuredDocumentation", - "src": "10116:576:84", + "src": "10120:576:5", "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." }, - "id": 9193, + "id": 3007, "implemented": true, "kind": "function", "modifiers": [], @@ -6828,18 +6792,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 9190, + "id": 3004, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 9185, + "id": 2999, "mutability": "mutable", "name": "from", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9193, - "src": "10727:12:84", + "scope": 3007, + "src": "10731:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6847,10 +6811,10 @@ "typeString": "address" }, "typeName": { - "id": 9184, + "id": 2998, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10727:7:84", + "src": "10731:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6862,13 +6826,13 @@ }, { "constant": false, - "id": 9187, + "id": 3001, "mutability": "mutable", "name": "to", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9193, - "src": "10741:10:84", + "scope": 3007, + "src": "10745:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6876,10 +6840,10 @@ "typeString": "address" }, "typeName": { - "id": 9186, + "id": 3000, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10741:7:84", + "src": "10745:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6891,13 +6855,13 @@ }, { "constant": false, - "id": 9189, + "id": 3003, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 9193, - "src": "10753:14:84", + "scope": 3007, + "src": "10757:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6905,10 +6869,10 @@ "typeString": "uint256" }, "typeName": { - "id": 9188, + "id": 3002, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "10753:7:84", + "src": "10757:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6918,36 +6882,6907 @@ "visibility": "internal" } ], - "src": "10726:42:84" + "src": "10730:42:5" }, "returnParameters": { - "id": 9191, + "id": 3005, "nodeType": "ParameterList", "parameters": [], - "src": "10786:0:84" + "src": "10790:0:5" }, - "scope": 9194, - "src": "10697:92:84", + "scope": 3008, + "src": "10701:92:5", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" } ], - "scope": 9195, - "src": "1345:9446:84" + "scope": 3009, + "src": "1321:9474:5" } ], - "src": "33:10759:84" + "src": "33:10763:5" + }, + "legacyAST": { + "attributes": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "exportedSymbols": { + "ERC20": [3008] + }, + "license": "MIT" + }, + "children": [ + { + "attributes": { + "literals": ["solidity", ">=", "0.6", ".0", "<", "0.8", ".0"] + }, + "id": 2507, + "name": "PragmaDirective", + "src": "33:31:5" + }, + { + "attributes": { + "SourceUnit": 3619, + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "file": "../../utils/Context.sol", + "scope": 3009, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 2508, + "name": "ImportDirective", + "src": "66:33:5" + }, + { + "attributes": { + "SourceUnit": 3087, + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "scope": 3009, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 2509, + "name": "ImportDirective", + "src": "100:22:5" + }, + { + "attributes": { + "SourceUnit": 2506, + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "scope": 3009, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 2510, + "name": "ImportDirective", + "src": "123:33:5" + }, + { + "attributes": { + "abstract": false, + "contractDependencies": [3086, 3618], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [3008, 3086, 3618], + "name": "ERC20", + "scope": 3009 + }, + "children": [ + { + "attributes": { + "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}." + }, + "id": 2511, + "name": "StructuredDocumentation", + "src": "158:1162:5" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Context", + "referencedDeclaration": 3618, + "type": "contract Context" + }, + "id": 2512, + "name": "UserDefinedTypeName", + "src": "1339:7:5" + } + ], + "id": 2513, + "name": "InheritanceSpecifier", + "src": "1339:7:5" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IERC20", + "referencedDeclaration": 3086, + "type": "contract IERC20" + }, + "id": 2514, + "name": "UserDefinedTypeName", + "src": "1348:6:5" + } + ], + "id": 2515, + "name": "InheritanceSpecifier", + "src": "1348:6:5" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeMath", + "referencedDeclaration": 2505, + "type": "library SafeMath" + }, + "id": 2516, + "name": "UserDefinedTypeName", + "src": "1367:8:5" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2517, + "name": "ElementaryTypeName", + "src": "1380:7:5" + } + ], + "id": 2518, + "name": "UsingForDirective", + "src": "1361:27:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_balances", + "overrides": null, + "scope": 3008, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => uint256)", + "value": null, + "visibility": "private" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 2519, + "name": "ElementaryTypeName", + "src": "1403:7:5" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2520, + "name": "ElementaryTypeName", + "src": "1414:7:5" + } + ], + "id": 2521, + "name": "Mapping", + "src": "1394:28:5" + } + ], + "id": 2522, + "name": "VariableDeclaration", + "src": "1394:46:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_allowances", + "overrides": null, + "scope": 3008, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => mapping(address => uint256))", + "value": null, + "visibility": "private" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => mapping(address => uint256))" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 2523, + "name": "ElementaryTypeName", + "src": "1456:7:5" + }, + { + "attributes": { + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 2524, + "name": "ElementaryTypeName", + "src": "1476:7:5" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2525, + "name": "ElementaryTypeName", + "src": "1487:7:5" + } + ], + "id": 2526, + "name": "Mapping", + "src": "1467:28:5" + } + ], + "id": 2527, + "name": "Mapping", + "src": "1447:49:5" + } + ], + "id": 2528, + "name": "VariableDeclaration", + "src": "1447:69:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_totalSupply", + "overrides": null, + "scope": 3008, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "private" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2529, + "name": "ElementaryTypeName", + "src": "1523:7:5" + } + ], + "id": 2530, + "name": "VariableDeclaration", + "src": "1523:28:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_name", + "overrides": null, + "scope": 3008, + "stateVariable": true, + "storageLocation": "default", + "type": "string", + "value": null, + "visibility": "private" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 2531, + "name": "ElementaryTypeName", + "src": "1558:6:5" + } + ], + "id": 2532, + "name": "VariableDeclaration", + "src": "1558:20:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_symbol", + "overrides": null, + "scope": 3008, + "stateVariable": true, + "storageLocation": "default", + "type": "string", + "value": null, + "visibility": "private" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 2533, + "name": "ElementaryTypeName", + "src": "1584:6:5" + } + ], + "id": 2534, + "name": "VariableDeclaration", + "src": "1584:22:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_decimals", + "overrides": null, + "scope": 3008, + "stateVariable": true, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "private" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 2535, + "name": "ElementaryTypeName", + "src": "1612:5:5" + } + ], + "id": 2536, + "name": "VariableDeclaration", + "src": "1612:23:5" + }, + { + "attributes": { + "implemented": true, + "isConstructor": true, + "kind": "constructor", + "modifiers": [null], + "name": "", + "overrides": null, + "scope": 3008, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n a default value of 18.\n To select a different value for {decimals}, use {_setupDecimals}.\n All three of these values are immutable: they can only be set once during\n construction." + }, + "id": 2537, + "name": "StructuredDocumentation", + "src": "1642:311:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "name_", + "overrides": null, + "scope": 2557, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 2538, + "name": "ElementaryTypeName", + "src": "1971:6:5" + } + ], + "id": 2539, + "name": "VariableDeclaration", + "src": "1971:19:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "symbol_", + "overrides": null, + "scope": 2557, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 2540, + "name": "ElementaryTypeName", + "src": "1992:6:5" + } + ], + "id": 2541, + "name": "VariableDeclaration", + "src": "1992:21:5" + } + ], + "id": 2542, + "name": "ParameterList", + "src": "1970:44:5" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2543, + "name": "ParameterList", + "src": "2022:0:5" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "string storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2532, + "type": "string storage ref", + "value": "_name" + }, + "id": 2544, + "name": "Identifier", + "src": "2032:5:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2539, + "type": "string memory", + "value": "name_" + }, + "id": 2545, + "name": "Identifier", + "src": "2040:5:5" + } + ], + "id": 2546, + "name": "Assignment", + "src": "2032:13:5" + } + ], + "id": 2547, + "name": "ExpressionStatement", + "src": "2032:13:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "string storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2534, + "type": "string storage ref", + "value": "_symbol" + }, + "id": 2548, + "name": "Identifier", + "src": "2055:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2541, + "type": "string memory", + "value": "symbol_" + }, + "id": 2549, + "name": "Identifier", + "src": "2065:7:5" + } + ], + "id": 2550, + "name": "Assignment", + "src": "2055:17:5" + } + ], + "id": 2551, + "name": "ExpressionStatement", + "src": "2055:17:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2536, + "type": "uint8", + "value": "_decimals" + }, + "id": 2552, + "name": "Identifier", + "src": "2082:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3138", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 18", + "value": "18" + }, + "id": 2553, + "name": "Literal", + "src": "2094:2:5" + } + ], + "id": 2554, + "name": "Assignment", + "src": "2082:14:5" + } + ], + "id": 2555, + "name": "ExpressionStatement", + "src": "2082:14:5" + } + ], + "id": 2556, + "name": "Block", + "src": "2022:81:5" + } + ], + "id": 2557, + "name": "FunctionDefinition", + "src": "1958:145:5" + }, + { + "attributes": { + "functionSelector": "06fdde03", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "name", + "overrides": null, + "scope": 3008, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the name of the token." + }, + "id": 2558, + "name": "StructuredDocumentation", + "src": "2109:54:5" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2559, + "name": "ParameterList", + "src": "2181:2:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2566, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 2560, + "name": "ElementaryTypeName", + "src": "2213:6:5" + } + ], + "id": 2561, + "name": "VariableDeclaration", + "src": "2213:13:5" + } + ], + "id": 2562, + "name": "ParameterList", + "src": "2212:15:5" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 2562 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2532, + "type": "string storage ref", + "value": "_name" + }, + "id": 2563, + "name": "Identifier", + "src": "2245:5:5" + } + ], + "id": 2564, + "name": "Return", + "src": "2238:12:5" + } + ], + "id": 2565, + "name": "Block", + "src": "2228:29:5" + } + ], + "id": 2566, + "name": "FunctionDefinition", + "src": "2168:89:5" + }, + { + "attributes": { + "functionSelector": "95d89b41", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "symbol", + "overrides": null, + "scope": 3008, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "id": 2567, + "name": "StructuredDocumentation", + "src": "2263:102:5" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2568, + "name": "ParameterList", + "src": "2385:2:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2575, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 2569, + "name": "ElementaryTypeName", + "src": "2417:6:5" + } + ], + "id": 2570, + "name": "VariableDeclaration", + "src": "2417:13:5" + } + ], + "id": 2571, + "name": "ParameterList", + "src": "2416:15:5" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 2571 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2534, + "type": "string storage ref", + "value": "_symbol" + }, + "id": 2572, + "name": "Identifier", + "src": "2449:7:5" + } + ], + "id": 2573, + "name": "Return", + "src": "2442:14:5" + } + ], + "id": 2574, + "name": "Block", + "src": "2432:31:5" + } + ], + "id": 2575, + "name": "FunctionDefinition", + "src": "2370:93:5" + }, + { + "attributes": { + "functionSelector": "313ce567", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "decimals", + "overrides": null, + "scope": 3008, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." + }, + "id": 2576, + "name": "StructuredDocumentation", + "src": "2469:612:5" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2577, + "name": "ParameterList", + "src": "3103:2:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2584, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 2578, + "name": "ElementaryTypeName", + "src": "3135:5:5" + } + ], + "id": 2579, + "name": "VariableDeclaration", + "src": "3135:5:5" + } + ], + "id": 2580, + "name": "ParameterList", + "src": "3134:7:5" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 2580 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2536, + "type": "uint8", + "value": "_decimals" + }, + "id": 2581, + "name": "Identifier", + "src": "3159:9:5" + } + ], + "id": 2582, + "name": "Return", + "src": "3152:16:5" + } + ], + "id": 2583, + "name": "Block", + "src": "3142:33:5" + } + ], + "id": 2584, + "name": "FunctionDefinition", + "src": "3086:89:5" + }, + { + "attributes": { + "baseFunctions": [3017], + "functionSelector": "18160ddd", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "totalSupply", + "scope": 3008, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev See {IERC20-totalSupply}." + }, + "id": 2585, + "name": "StructuredDocumentation", + "src": "3181:49:5" + }, + { + "attributes": { + "overrides": [null] + }, + "id": 2587, + "name": "OverrideSpecifier", + "src": "3278:8:5" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2586, + "name": "ParameterList", + "src": "3255:2:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2594, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2588, + "name": "ElementaryTypeName", + "src": "3296:7:5" + } + ], + "id": 2589, + "name": "VariableDeclaration", + "src": "3296:7:5" + } + ], + "id": 2590, + "name": "ParameterList", + "src": "3295:9:5" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 2590 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2530, + "type": "uint256", + "value": "_totalSupply" + }, + "id": 2591, + "name": "Identifier", + "src": "3322:12:5" + } + ], + "id": 2592, + "name": "Return", + "src": "3315:19:5" + } + ], + "id": 2593, + "name": "Block", + "src": "3305:36:5" + } + ], + "id": 2594, + "name": "FunctionDefinition", + "src": "3235:106:5" + }, + { + "attributes": { + "baseFunctions": [3025], + "functionSelector": "70a08231", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "balanceOf", + "scope": 3008, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev See {IERC20-balanceOf}." + }, + "id": 2595, + "name": "StructuredDocumentation", + "src": "3347:47:5" + }, + { + "attributes": { + "overrides": [null] + }, + "id": 2599, + "name": "OverrideSpecifier", + "src": "3455:8:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "account", + "overrides": null, + "scope": 2608, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2596, + "name": "ElementaryTypeName", + "src": "3418:7:5" + } + ], + "id": 2597, + "name": "VariableDeclaration", + "src": "3418:15:5" + } + ], + "id": 2598, + "name": "ParameterList", + "src": "3417:17:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2608, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2600, + "name": "ElementaryTypeName", + "src": "3473:7:5" + } + ], + "id": 2601, + "name": "VariableDeclaration", + "src": "3473:7:5" + } + ], + "id": 2602, + "name": "ParameterList", + "src": "3472:9:5" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 2602 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2522, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 2603, + "name": "Identifier", + "src": "3499:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2597, + "type": "address", + "value": "account" + }, + "id": 2604, + "name": "Identifier", + "src": "3509:7:5" + } + ], + "id": 2605, + "name": "IndexAccess", + "src": "3499:18:5" + } + ], + "id": 2606, + "name": "Return", + "src": "3492:25:5" + } + ], + "id": 2607, + "name": "Block", + "src": "3482:42:5" + } + ], + "id": 2608, + "name": "FunctionDefinition", + "src": "3399:125:5" + }, + { + "attributes": { + "baseFunctions": [3035], + "functionSelector": "a9059cbb", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "transfer", + "scope": 3008, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`." + }, + "id": 2609, + "name": "StructuredDocumentation", + "src": "3530:192:5" + }, + { + "attributes": { + "overrides": [null] + }, + "id": 2615, + "name": "OverrideSpecifier", + "src": "3795:8:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 2629, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2610, + "name": "ElementaryTypeName", + "src": "3745:7:5" + } + ], + "id": 2611, + "name": "VariableDeclaration", + "src": "3745:17:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 2629, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2612, + "name": "ElementaryTypeName", + "src": "3764:7:5" + } + ], + "id": 2613, + "name": "VariableDeclaration", + "src": "3764:14:5" + } + ], + "id": 2614, + "name": "ParameterList", + "src": "3744:35:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2629, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 2616, + "name": "ElementaryTypeName", + "src": "3813:4:5" + } + ], + "id": 2617, + "name": "VariableDeclaration", + "src": "3813:4:5" + } + ], + "id": 2618, + "name": "ParameterList", + "src": "3812:6:5" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2829, + "type": "function (address,address,uint256)", + "value": "_transfer" + }, + "id": 2619, + "name": "Identifier", + "src": "3829:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 2620, + "name": "Identifier", + "src": "3839:10:5" + } + ], + "id": 2621, + "name": "FunctionCall", + "src": "3839:12:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2611, + "type": "address", + "value": "recipient" + }, + "id": 2622, + "name": "Identifier", + "src": "3853:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2613, + "type": "uint256", + "value": "amount" + }, + "id": 2623, + "name": "Identifier", + "src": "3864:6:5" + } + ], + "id": 2624, + "name": "FunctionCall", + "src": "3829:42:5" + } + ], + "id": 2625, + "name": "ExpressionStatement", + "src": "3829:42:5" + }, + { + "attributes": { + "functionReturnParameters": 2618 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 2626, + "name": "Literal", + "src": "3888:4:5" + } + ], + "id": 2627, + "name": "Return", + "src": "3881:11:5" + } + ], + "id": 2628, + "name": "Block", + "src": "3819:80:5" + } + ], + "id": 2629, + "name": "FunctionDefinition", + "src": "3727:172:5" + }, + { + "attributes": { + "baseFunctions": [3045], + "functionSelector": "dd62ed3e", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "allowance", + "scope": 3008, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev See {IERC20-allowance}." + }, + "id": 2630, + "name": "StructuredDocumentation", + "src": "3905:47:5" + }, + { + "attributes": { + "overrides": [null] + }, + "id": 2636, + "name": "OverrideSpecifier", + "src": "4028:8:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "owner", + "overrides": null, + "scope": 2647, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2631, + "name": "ElementaryTypeName", + "src": "3976:7:5" + } + ], + "id": 2632, + "name": "VariableDeclaration", + "src": "3976:13:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 2647, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2633, + "name": "ElementaryTypeName", + "src": "3991:7:5" + } + ], + "id": 2634, + "name": "VariableDeclaration", + "src": "3991:15:5" + } + ], + "id": 2635, + "name": "ParameterList", + "src": "3975:32:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2647, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2637, + "name": "ElementaryTypeName", + "src": "4046:7:5" + } + ], + "id": 2638, + "name": "VariableDeclaration", + "src": "4046:7:5" + } + ], + "id": 2639, + "name": "ParameterList", + "src": "4045:9:5" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 2639 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2528, + "type": "mapping(address => mapping(address => uint256))", + "value": "_allowances" + }, + "id": 2640, + "name": "Identifier", + "src": "4072:11:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2632, + "type": "address", + "value": "owner" + }, + "id": 2641, + "name": "Identifier", + "src": "4084:5:5" + } + ], + "id": 2642, + "name": "IndexAccess", + "src": "4072:18:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2634, + "type": "address", + "value": "spender" + }, + "id": 2643, + "name": "Identifier", + "src": "4091:7:5" + } + ], + "id": 2644, + "name": "IndexAccess", + "src": "4072:27:5" + } + ], + "id": 2645, + "name": "Return", + "src": "4065:34:5" + } + ], + "id": 2646, + "name": "Block", + "src": "4055:51:5" + } + ], + "id": 2647, + "name": "FunctionDefinition", + "src": "3957:149:5" + }, + { + "attributes": { + "baseFunctions": [3055], + "functionSelector": "095ea7b3", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "approve", + "scope": 3008, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address." + }, + "id": 2648, + "name": "StructuredDocumentation", + "src": "4112:127:5" + }, + { + "attributes": { + "overrides": [null] + }, + "id": 2654, + "name": "OverrideSpecifier", + "src": "4309:8:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 2668, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2649, + "name": "ElementaryTypeName", + "src": "4261:7:5" + } + ], + "id": 2650, + "name": "VariableDeclaration", + "src": "4261:15:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 2668, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2651, + "name": "ElementaryTypeName", + "src": "4278:7:5" + } + ], + "id": 2652, + "name": "VariableDeclaration", + "src": "4278:14:5" + } + ], + "id": 2653, + "name": "ParameterList", + "src": "4260:33:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2668, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 2655, + "name": "ElementaryTypeName", + "src": "4327:4:5" + } + ], + "id": 2656, + "name": "VariableDeclaration", + "src": "4327:4:5" + } + ], + "id": 2657, + "name": "ParameterList", + "src": "4326:6:5" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2985, + "type": "function (address,address,uint256)", + "value": "_approve" + }, + "id": 2658, + "name": "Identifier", + "src": "4343:8:5" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 2659, + "name": "Identifier", + "src": "4352:10:5" + } + ], + "id": 2660, + "name": "FunctionCall", + "src": "4352:12:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2650, + "type": "address", + "value": "spender" + }, + "id": 2661, + "name": "Identifier", + "src": "4366:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2652, + "type": "uint256", + "value": "amount" + }, + "id": 2662, + "name": "Identifier", + "src": "4375:6:5" + } + ], + "id": 2663, + "name": "FunctionCall", + "src": "4343:39:5" + } + ], + "id": 2664, + "name": "ExpressionStatement", + "src": "4343:39:5" + }, + { + "attributes": { + "functionReturnParameters": 2657 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 2665, + "name": "Literal", + "src": "4399:4:5" + } + ], + "id": 2666, + "name": "Return", + "src": "4392:11:5" + } + ], + "id": 2667, + "name": "Block", + "src": "4333:77:5" + } + ], + "id": 2668, + "name": "FunctionDefinition", + "src": "4244:166:5" + }, + { + "attributes": { + "baseFunctions": [3067], + "functionSelector": "23b872dd", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "transferFrom", + "scope": 3008, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`." + }, + "id": 2669, + "name": "StructuredDocumentation", + "src": "4416:456:5" + }, + { + "attributes": { + "overrides": [null] + }, + "id": 2677, + "name": "OverrideSpecifier", + "src": "4965:8:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "sender", + "overrides": null, + "scope": 2706, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2670, + "name": "ElementaryTypeName", + "src": "4899:7:5" + } + ], + "id": 2671, + "name": "VariableDeclaration", + "src": "4899:14:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 2706, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2672, + "name": "ElementaryTypeName", + "src": "4915:7:5" + } + ], + "id": 2673, + "name": "VariableDeclaration", + "src": "4915:17:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 2706, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2674, + "name": "ElementaryTypeName", + "src": "4934:7:5" + } + ], + "id": 2675, + "name": "VariableDeclaration", + "src": "4934:14:5" + } + ], + "id": 2676, + "name": "ParameterList", + "src": "4898:51:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2706, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 2678, + "name": "ElementaryTypeName", + "src": "4983:4:5" + } + ], + "id": 2679, + "name": "VariableDeclaration", + "src": "4983:4:5" + } + ], + "id": 2680, + "name": "ParameterList", + "src": "4982:6:5" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2829, + "type": "function (address,address,uint256)", + "value": "_transfer" + }, + "id": 2681, + "name": "Identifier", + "src": "4999:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2671, + "type": "address", + "value": "sender" + }, + "id": 2682, + "name": "Identifier", + "src": "5009:6:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2673, + "type": "address", + "value": "recipient" + }, + "id": 2683, + "name": "Identifier", + "src": "5017:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2675, + "type": "uint256", + "value": "amount" + }, + "id": 2684, + "name": "Identifier", + "src": "5028:6:5" + } + ], + "id": 2685, + "name": "FunctionCall", + "src": "4999:36:5" + } + ], + "id": 2686, + "name": "ExpressionStatement", + "src": "4999:36:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2985, + "type": "function (address,address,uint256)", + "value": "_approve" + }, + "id": 2687, + "name": "Identifier", + "src": "5045:8:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2671, + "type": "address", + "value": "sender" + }, + "id": 2688, + "name": "Identifier", + "src": "5054:6:5" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 2689, + "name": "Identifier", + "src": "5062:10:5" + } + ], + "id": 2690, + "name": "FunctionCall", + "src": "5062:12:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 2456, + "type": "function (uint256,uint256,string memory) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2528, + "type": "mapping(address => mapping(address => uint256))", + "value": "_allowances" + }, + "id": 2691, + "name": "Identifier", + "src": "5076:11:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2671, + "type": "address", + "value": "sender" + }, + "id": 2692, + "name": "Identifier", + "src": "5088:6:5" + } + ], + "id": 2693, + "name": "IndexAccess", + "src": "5076:19:5" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 2694, + "name": "Identifier", + "src": "5096:10:5" + } + ], + "id": 2695, + "name": "FunctionCall", + "src": "5096:12:5" + } + ], + "id": 2696, + "name": "IndexAccess", + "src": "5076:33:5" + } + ], + "id": 2697, + "name": "MemberAccess", + "src": "5076:37:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2675, + "type": "uint256", + "value": "amount" + }, + "id": 2698, + "name": "Identifier", + "src": "5114:6:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: transfer amount exceeds allowance\"", + "value": "ERC20: transfer amount exceeds allowance" + }, + "id": 2699, + "name": "Literal", + "src": "5122:42:5" + } + ], + "id": 2700, + "name": "FunctionCall", + "src": "5076:89:5" + } + ], + "id": 2701, + "name": "FunctionCall", + "src": "5045:121:5" + } + ], + "id": 2702, + "name": "ExpressionStatement", + "src": "5045:121:5" + }, + { + "attributes": { + "functionReturnParameters": 2680 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 2703, + "name": "Literal", + "src": "5183:4:5" + } + ], + "id": 2704, + "name": "Return", + "src": "5176:11:5" + } + ], + "id": 2705, + "name": "Block", + "src": "4989:205:5" + } + ], + "id": 2706, + "name": "FunctionDefinition", + "src": "4877:317:5" + }, + { + "attributes": { + "functionSelector": "39509351", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "increaseAllowance", + "overrides": null, + "scope": 3008, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." + }, + "id": 2707, + "name": "StructuredDocumentation", + "src": "5200:384:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 2734, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2708, + "name": "ElementaryTypeName", + "src": "5616:7:5" + } + ], + "id": 2709, + "name": "VariableDeclaration", + "src": "5616:15:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "addedValue", + "overrides": null, + "scope": 2734, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2710, + "name": "ElementaryTypeName", + "src": "5633:7:5" + } + ], + "id": 2711, + "name": "VariableDeclaration", + "src": "5633:18:5" + } + ], + "id": 2712, + "name": "ParameterList", + "src": "5615:37:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2734, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 2713, + "name": "ElementaryTypeName", + "src": "5677:4:5" + } + ], + "id": 2714, + "name": "VariableDeclaration", + "src": "5677:4:5" + } + ], + "id": 2715, + "name": "ParameterList", + "src": "5676:6:5" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2985, + "type": "function (address,address,uint256)", + "value": "_approve" + }, + "id": 2716, + "name": "Identifier", + "src": "5693:8:5" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 2717, + "name": "Identifier", + "src": "5702:10:5" + } + ], + "id": 2718, + "name": "FunctionCall", + "src": "5702:12:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2709, + "type": "address", + "value": "spender" + }, + "id": 2719, + "name": "Identifier", + "src": "5716:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 2332, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2528, + "type": "mapping(address => mapping(address => uint256))", + "value": "_allowances" + }, + "id": 2720, + "name": "Identifier", + "src": "5725:11:5" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 2721, + "name": "Identifier", + "src": "5737:10:5" + } + ], + "id": 2722, + "name": "FunctionCall", + "src": "5737:12:5" + } + ], + "id": 2723, + "name": "IndexAccess", + "src": "5725:25:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2709, + "type": "address", + "value": "spender" + }, + "id": 2724, + "name": "Identifier", + "src": "5751:7:5" + } + ], + "id": 2725, + "name": "IndexAccess", + "src": "5725:34:5" + } + ], + "id": 2726, + "name": "MemberAccess", + "src": "5725:38:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2711, + "type": "uint256", + "value": "addedValue" + }, + "id": 2727, + "name": "Identifier", + "src": "5764:10:5" + } + ], + "id": 2728, + "name": "FunctionCall", + "src": "5725:50:5" + } + ], + "id": 2729, + "name": "FunctionCall", + "src": "5693:83:5" + } + ], + "id": 2730, + "name": "ExpressionStatement", + "src": "5693:83:5" + }, + { + "attributes": { + "functionReturnParameters": 2715 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 2731, + "name": "Literal", + "src": "5793:4:5" + } + ], + "id": 2732, + "name": "Return", + "src": "5786:11:5" + } + ], + "id": 2733, + "name": "Block", + "src": "5683:121:5" + } + ], + "id": 2734, + "name": "FunctionDefinition", + "src": "5589:215:5" + }, + { + "attributes": { + "functionSelector": "a457c2d7", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "decreaseAllowance", + "overrides": null, + "scope": 3008, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." + }, + "id": 2735, + "name": "StructuredDocumentation", + "src": "5810:476:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 2763, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2736, + "name": "ElementaryTypeName", + "src": "6318:7:5" + } + ], + "id": 2737, + "name": "VariableDeclaration", + "src": "6318:15:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "subtractedValue", + "overrides": null, + "scope": 2763, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2738, + "name": "ElementaryTypeName", + "src": "6335:7:5" + } + ], + "id": 2739, + "name": "VariableDeclaration", + "src": "6335:23:5" + } + ], + "id": 2740, + "name": "ParameterList", + "src": "6317:42:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2763, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 2741, + "name": "ElementaryTypeName", + "src": "6384:4:5" + } + ], + "id": 2742, + "name": "VariableDeclaration", + "src": "6384:4:5" + } + ], + "id": 2743, + "name": "ParameterList", + "src": "6383:6:5" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2985, + "type": "function (address,address,uint256)", + "value": "_approve" + }, + "id": 2744, + "name": "Identifier", + "src": "6400:8:5" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 2745, + "name": "Identifier", + "src": "6409:10:5" + } + ], + "id": 2746, + "name": "FunctionCall", + "src": "6409:12:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2737, + "type": "address", + "value": "spender" + }, + "id": 2747, + "name": "Identifier", + "src": "6423:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 2456, + "type": "function (uint256,uint256,string memory) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2528, + "type": "mapping(address => mapping(address => uint256))", + "value": "_allowances" + }, + "id": 2748, + "name": "Identifier", + "src": "6432:11:5" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 2749, + "name": "Identifier", + "src": "6444:10:5" + } + ], + "id": 2750, + "name": "FunctionCall", + "src": "6444:12:5" + } + ], + "id": 2751, + "name": "IndexAccess", + "src": "6432:25:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2737, + "type": "address", + "value": "spender" + }, + "id": 2752, + "name": "Identifier", + "src": "6458:7:5" + } + ], + "id": 2753, + "name": "IndexAccess", + "src": "6432:34:5" + } + ], + "id": 2754, + "name": "MemberAccess", + "src": "6432:38:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2739, + "type": "uint256", + "value": "subtractedValue" + }, + "id": 2755, + "name": "Identifier", + "src": "6471:15:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: decreased allowance below zero\"", + "value": "ERC20: decreased allowance below zero" + }, + "id": 2756, + "name": "Literal", + "src": "6488:39:5" + } + ], + "id": 2757, + "name": "FunctionCall", + "src": "6432:96:5" + } + ], + "id": 2758, + "name": "FunctionCall", + "src": "6400:129:5" + } + ], + "id": 2759, + "name": "ExpressionStatement", + "src": "6400:129:5" + }, + { + "attributes": { + "functionReturnParameters": 2743 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 2760, + "name": "Literal", + "src": "6546:4:5" + } + ], + "id": 2761, + "name": "Return", + "src": "6539:11:5" + } + ], + "id": 2762, + "name": "Block", + "src": "6390:167:5" + } + ], + "id": 2763, + "name": "FunctionDefinition", + "src": "6291:266:5" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_transfer", + "overrides": null, + "scope": 3008, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`." + }, + "id": 2764, + "name": "StructuredDocumentation", + "src": "6563:463:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "sender", + "overrides": null, + "scope": 2829, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2765, + "name": "ElementaryTypeName", + "src": "7050:7:5" + } + ], + "id": 2766, + "name": "VariableDeclaration", + "src": "7050:14:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 2829, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2767, + "name": "ElementaryTypeName", + "src": "7066:7:5" + } + ], + "id": 2768, + "name": "VariableDeclaration", + "src": "7066:17:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 2829, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2769, + "name": "ElementaryTypeName", + "src": "7085:7:5" + } + ], + "id": 2770, + "name": "VariableDeclaration", + "src": "7085:14:5" + } + ], + "id": 2771, + "name": "ParameterList", + "src": "7049:51:5" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2772, + "name": "ParameterList", + "src": "7118:0:5" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2773, + "name": "Identifier", + "src": "7128:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2766, + "type": "address", + "value": "sender" + }, + "id": 2774, + "name": "Identifier", + "src": "7136:6:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2775, + "name": "ElementaryTypeName", + "src": "7146:7:5" + } + ], + "id": 2776, + "name": "ElementaryTypeNameExpression", + "src": "7146:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2777, + "name": "Literal", + "src": "7154:1:5" + } + ], + "id": 2778, + "name": "FunctionCall", + "src": "7146:10:5" + } + ], + "id": 2779, + "name": "BinaryOperation", + "src": "7136:20:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: transfer from the zero address\"", + "value": "ERC20: transfer from the zero address" + }, + "id": 2780, + "name": "Literal", + "src": "7158:39:5" + } + ], + "id": 2781, + "name": "FunctionCall", + "src": "7128:70:5" + } + ], + "id": 2782, + "name": "ExpressionStatement", + "src": "7128:70:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2783, + "name": "Identifier", + "src": "7208:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2768, + "type": "address", + "value": "recipient" + }, + "id": 2784, + "name": "Identifier", + "src": "7216:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2785, + "name": "ElementaryTypeName", + "src": "7229:7:5" + } + ], + "id": 2786, + "name": "ElementaryTypeNameExpression", + "src": "7229:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2787, + "name": "Literal", + "src": "7237:1:5" + } + ], + "id": 2788, + "name": "FunctionCall", + "src": "7229:10:5" + } + ], + "id": 2789, + "name": "BinaryOperation", + "src": "7216:23:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: transfer to the zero address\"", + "value": "ERC20: transfer to the zero address" + }, + "id": 2790, + "name": "Literal", + "src": "7241:37:5" + } + ], + "id": 2791, + "name": "FunctionCall", + "src": "7208:71:5" + } + ], + "id": 2792, + "name": "ExpressionStatement", + "src": "7208:71:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3007, + "type": "function (address,address,uint256)", + "value": "_beforeTokenTransfer" + }, + "id": 2793, + "name": "Identifier", + "src": "7290:20:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2766, + "type": "address", + "value": "sender" + }, + "id": 2794, + "name": "Identifier", + "src": "7311:6:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2768, + "type": "address", + "value": "recipient" + }, + "id": 2795, + "name": "Identifier", + "src": "7319:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2770, + "type": "uint256", + "value": "amount" + }, + "id": 2796, + "name": "Identifier", + "src": "7330:6:5" + } + ], + "id": 2797, + "name": "FunctionCall", + "src": "7290:47:5" + } + ], + "id": 2798, + "name": "ExpressionStatement", + "src": "7290:47:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2522, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 2799, + "name": "Identifier", + "src": "7348:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2766, + "type": "address", + "value": "sender" + }, + "id": 2800, + "name": "Identifier", + "src": "7358:6:5" + } + ], + "id": 2801, + "name": "IndexAccess", + "src": "7348:17:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 2456, + "type": "function (uint256,uint256,string memory) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2522, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 2802, + "name": "Identifier", + "src": "7368:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2766, + "type": "address", + "value": "sender" + }, + "id": 2803, + "name": "Identifier", + "src": "7378:6:5" + } + ], + "id": 2804, + "name": "IndexAccess", + "src": "7368:17:5" + } + ], + "id": 2805, + "name": "MemberAccess", + "src": "7368:21:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2770, + "type": "uint256", + "value": "amount" + }, + "id": 2806, + "name": "Identifier", + "src": "7390:6:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: transfer amount exceeds balance\"", + "value": "ERC20: transfer amount exceeds balance" + }, + "id": 2807, + "name": "Literal", + "src": "7398:40:5" + } + ], + "id": 2808, + "name": "FunctionCall", + "src": "7368:71:5" + } + ], + "id": 2809, + "name": "Assignment", + "src": "7348:91:5" + } + ], + "id": 2810, + "name": "ExpressionStatement", + "src": "7348:91:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2522, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 2811, + "name": "Identifier", + "src": "7449:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2768, + "type": "address", + "value": "recipient" + }, + "id": 2812, + "name": "Identifier", + "src": "7459:9:5" + } + ], + "id": 2813, + "name": "IndexAccess", + "src": "7449:20:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 2332, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2522, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 2814, + "name": "Identifier", + "src": "7472:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2768, + "type": "address", + "value": "recipient" + }, + "id": 2815, + "name": "Identifier", + "src": "7482:9:5" + } + ], + "id": 2816, + "name": "IndexAccess", + "src": "7472:20:5" + } + ], + "id": 2817, + "name": "MemberAccess", + "src": "7472:24:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2770, + "type": "uint256", + "value": "amount" + }, + "id": 2818, + "name": "Identifier", + "src": "7497:6:5" + } + ], + "id": 2819, + "name": "FunctionCall", + "src": "7472:32:5" + } + ], + "id": 2820, + "name": "Assignment", + "src": "7449:55:5" + } + ], + "id": 2821, + "name": "ExpressionStatement", + "src": "7449:55:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3076, + "type": "function (address,address,uint256)", + "value": "Transfer" + }, + "id": 2822, + "name": "Identifier", + "src": "7519:8:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2766, + "type": "address", + "value": "sender" + }, + "id": 2823, + "name": "Identifier", + "src": "7528:6:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2768, + "type": "address", + "value": "recipient" + }, + "id": 2824, + "name": "Identifier", + "src": "7536:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2770, + "type": "uint256", + "value": "amount" + }, + "id": 2825, + "name": "Identifier", + "src": "7547:6:5" + } + ], + "id": 2826, + "name": "FunctionCall", + "src": "7519:35:5" + } + ], + "id": 2827, + "name": "EmitStatement", + "src": "7514:40:5" + } + ], + "id": 2828, + "name": "Block", + "src": "7118:443:5" + } + ], + "id": 2829, + "name": "FunctionDefinition", + "src": "7031:530:5" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_mint", + "overrides": null, + "scope": 3008, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `to` cannot be the zero address." + }, + "id": 2830, + "name": "StructuredDocumentation", + "src": "7567:260:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "account", + "overrides": null, + "scope": 2884, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2831, + "name": "ElementaryTypeName", + "src": "7847:7:5" + } + ], + "id": 2832, + "name": "VariableDeclaration", + "src": "7847:15:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 2884, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2833, + "name": "ElementaryTypeName", + "src": "7864:7:5" + } + ], + "id": 2834, + "name": "VariableDeclaration", + "src": "7864:14:5" + } + ], + "id": 2835, + "name": "ParameterList", + "src": "7846:33:5" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2836, + "name": "ParameterList", + "src": "7897:0:5" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2837, + "name": "Identifier", + "src": "7907:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2832, + "type": "address", + "value": "account" + }, + "id": 2838, + "name": "Identifier", + "src": "7915:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2839, + "name": "ElementaryTypeName", + "src": "7926:7:5" + } + ], + "id": 2840, + "name": "ElementaryTypeNameExpression", + "src": "7926:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2841, + "name": "Literal", + "src": "7934:1:5" + } + ], + "id": 2842, + "name": "FunctionCall", + "src": "7926:10:5" + } + ], + "id": 2843, + "name": "BinaryOperation", + "src": "7915:21:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: mint to the zero address\"", + "value": "ERC20: mint to the zero address" + }, + "id": 2844, + "name": "Literal", + "src": "7938:33:5" + } + ], + "id": 2845, + "name": "FunctionCall", + "src": "7907:65:5" + } + ], + "id": 2846, + "name": "ExpressionStatement", + "src": "7907:65:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3007, + "type": "function (address,address,uint256)", + "value": "_beforeTokenTransfer" + }, + "id": 2847, + "name": "Identifier", + "src": "7983:20:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2848, + "name": "ElementaryTypeName", + "src": "8004:7:5" + } + ], + "id": 2849, + "name": "ElementaryTypeNameExpression", + "src": "8004:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2850, + "name": "Literal", + "src": "8012:1:5" + } + ], + "id": 2851, + "name": "FunctionCall", + "src": "8004:10:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2832, + "type": "address", + "value": "account" + }, + "id": 2852, + "name": "Identifier", + "src": "8016:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2834, + "type": "uint256", + "value": "amount" + }, + "id": 2853, + "name": "Identifier", + "src": "8025:6:5" + } + ], + "id": 2854, + "name": "FunctionCall", + "src": "7983:49:5" + } + ], + "id": 2855, + "name": "ExpressionStatement", + "src": "7983:49:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2530, + "type": "uint256", + "value": "_totalSupply" + }, + "id": 2856, + "name": "Identifier", + "src": "8043:12:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 2332, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2530, + "type": "uint256", + "value": "_totalSupply" + }, + "id": 2857, + "name": "Identifier", + "src": "8058:12:5" + } + ], + "id": 2858, + "name": "MemberAccess", + "src": "8058:16:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2834, + "type": "uint256", + "value": "amount" + }, + "id": 2859, + "name": "Identifier", + "src": "8075:6:5" + } + ], + "id": 2860, + "name": "FunctionCall", + "src": "8058:24:5" + } + ], + "id": 2861, + "name": "Assignment", + "src": "8043:39:5" + } + ], + "id": 2862, + "name": "ExpressionStatement", + "src": "8043:39:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2522, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 2863, + "name": "Identifier", + "src": "8092:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2832, + "type": "address", + "value": "account" + }, + "id": 2864, + "name": "Identifier", + "src": "8102:7:5" + } + ], + "id": 2865, + "name": "IndexAccess", + "src": "8092:18:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 2332, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2522, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 2866, + "name": "Identifier", + "src": "8113:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2832, + "type": "address", + "value": "account" + }, + "id": 2867, + "name": "Identifier", + "src": "8123:7:5" + } + ], + "id": 2868, + "name": "IndexAccess", + "src": "8113:18:5" + } + ], + "id": 2869, + "name": "MemberAccess", + "src": "8113:22:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2834, + "type": "uint256", + "value": "amount" + }, + "id": 2870, + "name": "Identifier", + "src": "8136:6:5" + } + ], + "id": 2871, + "name": "FunctionCall", + "src": "8113:30:5" + } + ], + "id": 2872, + "name": "Assignment", + "src": "8092:51:5" + } + ], + "id": 2873, + "name": "ExpressionStatement", + "src": "8092:51:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3076, + "type": "function (address,address,uint256)", + "value": "Transfer" + }, + "id": 2874, + "name": "Identifier", + "src": "8158:8:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2875, + "name": "ElementaryTypeName", + "src": "8167:7:5" + } + ], + "id": 2876, + "name": "ElementaryTypeNameExpression", + "src": "8167:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2877, + "name": "Literal", + "src": "8175:1:5" + } + ], + "id": 2878, + "name": "FunctionCall", + "src": "8167:10:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2832, + "type": "address", + "value": "account" + }, + "id": 2879, + "name": "Identifier", + "src": "8179:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2834, + "type": "uint256", + "value": "amount" + }, + "id": 2880, + "name": "Identifier", + "src": "8188:6:5" + } + ], + "id": 2881, + "name": "FunctionCall", + "src": "8158:37:5" + } + ], + "id": 2882, + "name": "EmitStatement", + "src": "8153:42:5" + } + ], + "id": 2883, + "name": "Block", + "src": "7897:305:5" + } + ], + "id": 2884, + "name": "FunctionDefinition", + "src": "7832:370:5" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_burn", + "overrides": null, + "scope": 3008, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." + }, + "id": 2885, + "name": "StructuredDocumentation", + "src": "8208:309:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "account", + "overrides": null, + "scope": 2940, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2886, + "name": "ElementaryTypeName", + "src": "8537:7:5" + } + ], + "id": 2887, + "name": "VariableDeclaration", + "src": "8537:15:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 2940, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2888, + "name": "ElementaryTypeName", + "src": "8554:7:5" + } + ], + "id": 2889, + "name": "VariableDeclaration", + "src": "8554:14:5" + } + ], + "id": 2890, + "name": "ParameterList", + "src": "8536:33:5" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2891, + "name": "ParameterList", + "src": "8587:0:5" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2892, + "name": "Identifier", + "src": "8597:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2887, + "type": "address", + "value": "account" + }, + "id": 2893, + "name": "Identifier", + "src": "8605:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2894, + "name": "ElementaryTypeName", + "src": "8616:7:5" + } + ], + "id": 2895, + "name": "ElementaryTypeNameExpression", + "src": "8616:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2896, + "name": "Literal", + "src": "8624:1:5" + } + ], + "id": 2897, + "name": "FunctionCall", + "src": "8616:10:5" + } + ], + "id": 2898, + "name": "BinaryOperation", + "src": "8605:21:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: burn from the zero address\"", + "value": "ERC20: burn from the zero address" + }, + "id": 2899, + "name": "Literal", + "src": "8628:35:5" + } + ], + "id": 2900, + "name": "FunctionCall", + "src": "8597:67:5" + } + ], + "id": 2901, + "name": "ExpressionStatement", + "src": "8597:67:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3007, + "type": "function (address,address,uint256)", + "value": "_beforeTokenTransfer" + }, + "id": 2902, + "name": "Identifier", + "src": "8675:20:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2887, + "type": "address", + "value": "account" + }, + "id": 2903, + "name": "Identifier", + "src": "8696:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2904, + "name": "ElementaryTypeName", + "src": "8705:7:5" + } + ], + "id": 2905, + "name": "ElementaryTypeNameExpression", + "src": "8705:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2906, + "name": "Literal", + "src": "8713:1:5" + } + ], + "id": 2907, + "name": "FunctionCall", + "src": "8705:10:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2889, + "type": "uint256", + "value": "amount" + }, + "id": 2908, + "name": "Identifier", + "src": "8717:6:5" + } + ], + "id": 2909, + "name": "FunctionCall", + "src": "8675:49:5" + } + ], + "id": 2910, + "name": "ExpressionStatement", + "src": "8675:49:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2522, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 2911, + "name": "Identifier", + "src": "8735:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2887, + "type": "address", + "value": "account" + }, + "id": 2912, + "name": "Identifier", + "src": "8745:7:5" + } + ], + "id": 2913, + "name": "IndexAccess", + "src": "8735:18:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 2456, + "type": "function (uint256,uint256,string memory) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2522, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 2914, + "name": "Identifier", + "src": "8756:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2887, + "type": "address", + "value": "account" + }, + "id": 2915, + "name": "Identifier", + "src": "8766:7:5" + } + ], + "id": 2916, + "name": "IndexAccess", + "src": "8756:18:5" + } + ], + "id": 2917, + "name": "MemberAccess", + "src": "8756:22:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2889, + "type": "uint256", + "value": "amount" + }, + "id": 2918, + "name": "Identifier", + "src": "8779:6:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: burn amount exceeds balance\"", + "value": "ERC20: burn amount exceeds balance" + }, + "id": 2919, + "name": "Literal", + "src": "8787:36:5" + } + ], + "id": 2920, + "name": "FunctionCall", + "src": "8756:68:5" + } + ], + "id": 2921, + "name": "Assignment", + "src": "8735:89:5" + } + ], + "id": 2922, + "name": "ExpressionStatement", + "src": "8735:89:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2530, + "type": "uint256", + "value": "_totalSupply" + }, + "id": 2923, + "name": "Identifier", + "src": "8834:12:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 2354, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2530, + "type": "uint256", + "value": "_totalSupply" + }, + "id": 2924, + "name": "Identifier", + "src": "8849:12:5" + } + ], + "id": 2925, + "name": "MemberAccess", + "src": "8849:16:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2889, + "type": "uint256", + "value": "amount" + }, + "id": 2926, + "name": "Identifier", + "src": "8866:6:5" + } + ], + "id": 2927, + "name": "FunctionCall", + "src": "8849:24:5" + } + ], + "id": 2928, + "name": "Assignment", + "src": "8834:39:5" + } + ], + "id": 2929, + "name": "ExpressionStatement", + "src": "8834:39:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3076, + "type": "function (address,address,uint256)", + "value": "Transfer" + }, + "id": 2930, + "name": "Identifier", + "src": "8888:8:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2887, + "type": "address", + "value": "account" + }, + "id": 2931, + "name": "Identifier", + "src": "8897:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2932, + "name": "ElementaryTypeName", + "src": "8906:7:5" + } + ], + "id": 2933, + "name": "ElementaryTypeNameExpression", + "src": "8906:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2934, + "name": "Literal", + "src": "8914:1:5" + } + ], + "id": 2935, + "name": "FunctionCall", + "src": "8906:10:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2889, + "type": "uint256", + "value": "amount" + }, + "id": 2936, + "name": "Identifier", + "src": "8918:6:5" + } + ], + "id": 2937, + "name": "FunctionCall", + "src": "8888:37:5" + } + ], + "id": 2938, + "name": "EmitStatement", + "src": "8883:42:5" + } + ], + "id": 2939, + "name": "Block", + "src": "8587:345:5" + } + ], + "id": 2940, + "name": "FunctionDefinition", + "src": "8522:410:5" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_approve", + "overrides": null, + "scope": 3008, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." + }, + "id": 2941, + "name": "StructuredDocumentation", + "src": "8938:412:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "owner", + "overrides": null, + "scope": 2985, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2942, + "name": "ElementaryTypeName", + "src": "9373:7:5" + } + ], + "id": 2943, + "name": "VariableDeclaration", + "src": "9373:13:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 2985, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2944, + "name": "ElementaryTypeName", + "src": "9388:7:5" + } + ], + "id": 2945, + "name": "VariableDeclaration", + "src": "9388:15:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 2985, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2946, + "name": "ElementaryTypeName", + "src": "9405:7:5" + } + ], + "id": 2947, + "name": "VariableDeclaration", + "src": "9405:14:5" + } + ], + "id": 2948, + "name": "ParameterList", + "src": "9372:48:5" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2949, + "name": "ParameterList", + "src": "9438:0:5" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2950, + "name": "Identifier", + "src": "9448:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2943, + "type": "address", + "value": "owner" + }, + "id": 2951, + "name": "Identifier", + "src": "9456:5:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2952, + "name": "ElementaryTypeName", + "src": "9465:7:5" + } + ], + "id": 2953, + "name": "ElementaryTypeNameExpression", + "src": "9465:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2954, + "name": "Literal", + "src": "9473:1:5" + } + ], + "id": 2955, + "name": "FunctionCall", + "src": "9465:10:5" + } + ], + "id": 2956, + "name": "BinaryOperation", + "src": "9456:19:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: approve from the zero address\"", + "value": "ERC20: approve from the zero address" + }, + "id": 2957, + "name": "Literal", + "src": "9477:38:5" + } + ], + "id": 2958, + "name": "FunctionCall", + "src": "9448:68:5" + } + ], + "id": 2959, + "name": "ExpressionStatement", + "src": "9448:68:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2960, + "name": "Identifier", + "src": "9526:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2945, + "type": "address", + "value": "spender" + }, + "id": 2961, + "name": "Identifier", + "src": "9534:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2962, + "name": "ElementaryTypeName", + "src": "9545:7:5" + } + ], + "id": 2963, + "name": "ElementaryTypeNameExpression", + "src": "9545:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2964, + "name": "Literal", + "src": "9553:1:5" + } + ], + "id": 2965, + "name": "FunctionCall", + "src": "9545:10:5" + } + ], + "id": 2966, + "name": "BinaryOperation", + "src": "9534:21:5" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: approve to the zero address\"", + "value": "ERC20: approve to the zero address" + }, + "id": 2967, + "name": "Literal", + "src": "9557:36:5" + } + ], + "id": 2968, + "name": "FunctionCall", + "src": "9526:68:5" + } + ], + "id": 2969, + "name": "ExpressionStatement", + "src": "9526:68:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2528, + "type": "mapping(address => mapping(address => uint256))", + "value": "_allowances" + }, + "id": 2970, + "name": "Identifier", + "src": "9605:11:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2943, + "type": "address", + "value": "owner" + }, + "id": 2971, + "name": "Identifier", + "src": "9617:5:5" + } + ], + "id": 2973, + "name": "IndexAccess", + "src": "9605:18:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2945, + "type": "address", + "value": "spender" + }, + "id": 2972, + "name": "Identifier", + "src": "9624:7:5" + } + ], + "id": 2974, + "name": "IndexAccess", + "src": "9605:27:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2947, + "type": "uint256", + "value": "amount" + }, + "id": 2975, + "name": "Identifier", + "src": "9635:6:5" + } + ], + "id": 2976, + "name": "Assignment", + "src": "9605:36:5" + } + ], + "id": 2977, + "name": "ExpressionStatement", + "src": "9605:36:5" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3085, + "type": "function (address,address,uint256)", + "value": "Approval" + }, + "id": 2978, + "name": "Identifier", + "src": "9656:8:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2943, + "type": "address", + "value": "owner" + }, + "id": 2979, + "name": "Identifier", + "src": "9665:5:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2945, + "type": "address", + "value": "spender" + }, + "id": 2980, + "name": "Identifier", + "src": "9672:7:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2947, + "type": "uint256", + "value": "amount" + }, + "id": 2981, + "name": "Identifier", + "src": "9681:6:5" + } + ], + "id": 2982, + "name": "FunctionCall", + "src": "9656:32:5" + } + ], + "id": 2983, + "name": "EmitStatement", + "src": "9651:37:5" + } + ], + "id": 2984, + "name": "Block", + "src": "9438:257:5" + } + ], + "id": 2985, + "name": "FunctionDefinition", + "src": "9355:340:5" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_setupDecimals", + "overrides": null, + "scope": 3008, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does." + }, + "id": 2986, + "name": "StructuredDocumentation", + "src": "9701:312:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "decimals_", + "overrides": null, + "scope": 2996, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 2987, + "name": "ElementaryTypeName", + "src": "10042:5:5" + } + ], + "id": 2988, + "name": "VariableDeclaration", + "src": "10042:15:5" + } + ], + "id": 2989, + "name": "ParameterList", + "src": "10041:17:5" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2990, + "name": "ParameterList", + "src": "10076:0:5" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2536, + "type": "uint8", + "value": "_decimals" + }, + "id": 2991, + "name": "Identifier", + "src": "10086:9:5" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2988, + "type": "uint8", + "value": "decimals_" + }, + "id": 2992, + "name": "Identifier", + "src": "10098:9:5" + } + ], + "id": 2993, + "name": "Assignment", + "src": "10086:21:5" + } + ], + "id": 2994, + "name": "ExpressionStatement", + "src": "10086:21:5" + } + ], + "id": 2995, + "name": "Block", + "src": "10076:38:5" + } + ], + "id": 2996, + "name": "FunctionDefinition", + "src": "10018:96:5" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_beforeTokenTransfer", + "overrides": null, + "scope": 3008, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." + }, + "id": 2997, + "name": "StructuredDocumentation", + "src": "10120:576:5" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "from", + "overrides": null, + "scope": 3007, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2998, + "name": "ElementaryTypeName", + "src": "10731:7:5" + } + ], + "id": 2999, + "name": "VariableDeclaration", + "src": "10731:12:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "to", + "overrides": null, + "scope": 3007, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3000, + "name": "ElementaryTypeName", + "src": "10745:7:5" + } + ], + "id": 3001, + "name": "VariableDeclaration", + "src": "10745:10:5" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 3007, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3002, + "name": "ElementaryTypeName", + "src": "10757:7:5" + } + ], + "id": 3003, + "name": "VariableDeclaration", + "src": "10757:14:5" + } + ], + "id": 3004, + "name": "ParameterList", + "src": "10730:42:5" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3005, + "name": "ParameterList", + "src": "10790:0:5" + }, + { + "attributes": { + "statements": [null] + }, + "children": [], + "id": 3006, + "name": "Block", + "src": "10790:3:5" + } + ], + "id": 3007, + "name": "FunctionDefinition", + "src": "10701:92:5" + } + ], + "id": 3008, + "name": "ContractDefinition", + "src": "1321:9474:5" + } + ], + "id": 3009, + "name": "SourceUnit", + "src": "33:10763:5" }, - "bytecode": "0x60806040523480156200001157600080fd5b50604051620013bb380380620013bb833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040525050508160039080519060200190620001cd9291906200020b565b508060049080519060200190620001e69291906200020b565b506012600560006101000a81548160ff021916908360ff1602179055505050620002ba565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b620002b791905b80821115620002b357600081600090555060010162000299565b5090565b90565b6110f180620002ca6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d704f3f640b0d56354f5e19e5f360fd86f93ba8289d8211f72caac7ff2d852b564736f6c634300060a0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d704f3f640b0d56354f5e19e5f360fd86f93ba8289d8211f72caac7ff2d852b564736f6c634300060a0033", "compiler": { "name": "solc", - "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", - "optimizer": { - "enabled": false, - "runs": 200 + "version": "0.6.12+commit.27d51765.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.3.4", + "updatedAt": "2021-04-12T21:53:29.919Z", + "devdoc": { + "details": "Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.", + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "constructor": { + "details": "Sets the values for {name} and {symbol}, initializes {decimals} with a default value of 18. To select a different value for {decimals}, use {_setupDecimals}. All three of these values are immutable: they can only be set once during construction." + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "decreaseAllowance(address,uint256)": { + "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." + }, + "increaseAllowance(address,uint256)": { + "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." + }, + "name()": { + "details": "Returns the name of the token." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "See {IERC20-totalSupply}." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`." + } }, - "evmVersion": "petersburg" + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 } } diff --git a/packages/bridge/contracts/IERC20.json b/packages/bridge/contracts/IERC20.json new file mode 100644 index 0000000..34af045 --- /dev/null +++ b/packages/bridge/contracts/IERC20.json @@ -0,0 +1,2160 @@ +{ + "contractName": "IERC20", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]}},\"version\":1}", + "bytecode": "0x", + "deployedBytecode": "0x", + "immutableReferences": {}, + "sourceMap": "", + "deployedSourceMap": "", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n", + "sourcePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [3086] + }, + "id": 3087, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3010, + "literals": ["solidity", ">=", "0.6", ".0", "<", "0.8", ".0"], + "nodeType": "PragmaDirective", + "src": "33:31:6" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3011, + "nodeType": "StructuredDocumentation", + "src": "66:70:6", + "text": " @dev Interface of the ERC20 standard as defined in the EIP." + }, + "fullyImplemented": false, + "id": 3086, + "linearizedBaseContracts": [3086], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 3012, + "nodeType": "StructuredDocumentation", + "src": "160:66:6", + "text": " @dev Returns the amount of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 3017, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3013, + "nodeType": "ParameterList", + "parameters": [], + "src": "251:2:6" + }, + "returnParameters": { + "id": 3016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3015, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3017, + "src": "277:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3014, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "277:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "276:9:6" + }, + "scope": 3086, + "src": "231:55:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 3018, + "nodeType": "StructuredDocumentation", + "src": "292:72:6", + "text": " @dev Returns the amount of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 3025, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3020, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3025, + "src": "388:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3019, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "388:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "387:17:6" + }, + "returnParameters": { + "id": 3024, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3023, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3025, + "src": "428:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3022, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "428:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "427:9:6" + }, + "scope": 3086, + "src": "369:68:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 3026, + "nodeType": "StructuredDocumentation", + "src": "443:209:6", + "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 3035, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3031, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3028, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3035, + "src": "675:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3027, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "675:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3030, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3035, + "src": "694:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3029, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "694:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "674:35:6" + }, + "returnParameters": { + "id": 3034, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3033, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3035, + "src": "728:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3032, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "728:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "727:6:6" + }, + "scope": 3086, + "src": "657:77:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 3036, + "nodeType": "StructuredDocumentation", + "src": "740:264:6", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "functionSelector": "dd62ed3e", + "id": 3045, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3038, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3045, + "src": "1028:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3037, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1028:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3040, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3045, + "src": "1043:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3039, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1043:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1027:32:6" + }, + "returnParameters": { + "id": 3044, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3043, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3045, + "src": "1083:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3042, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1083:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1082:9:6" + }, + "scope": 3086, + "src": "1009:83:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 3046, + "nodeType": "StructuredDocumentation", + "src": "1098:642:6", + "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 3055, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3048, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3055, + "src": "1762:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3047, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1762:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3050, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3055, + "src": "1779:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1779:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1761:33:6" + }, + "returnParameters": { + "id": 3054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3053, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3055, + "src": "1813:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3052, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1813:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1812:6:6" + }, + "scope": 3086, + "src": "1745:74:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 3056, + "nodeType": "StructuredDocumentation", + "src": "1825:296:6", + "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 3067, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3058, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3067, + "src": "2148:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3057, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2148:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3060, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3067, + "src": "2164:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3059, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2164:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3062, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3067, + "src": "2183:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3061, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2183:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2147:51:6" + }, + "returnParameters": { + "id": 3066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3065, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3067, + "src": "2217:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3064, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2217:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2216:6:6" + }, + "scope": 3086, + "src": "2126:97:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 3068, + "nodeType": "StructuredDocumentation", + "src": "2229:158:6", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "id": 3076, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 3075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3070, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3076, + "src": "2407:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3069, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2407:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3072, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3076, + "src": "2429:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3071, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2429:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3074, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3076, + "src": "2449:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2449:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2406:57:6" + }, + "src": "2392:72:6" + }, + { + "anonymous": false, + "documentation": { + "id": 3077, + "nodeType": "StructuredDocumentation", + "src": "2470:148:6", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "id": 3085, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 3084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3079, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3085, + "src": "2638:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3078, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2638:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3081, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3085, + "src": "2661:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3080, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2661:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3083, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3085, + "src": "2686:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3082, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2686:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2637:63:6" + }, + "src": "2623:78:6" + } + ], + "scope": 3087, + "src": "137:2566:6" + } + ], + "src": "33:2671:6" + }, + "legacyAST": { + "attributes": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [3086] + }, + "license": "MIT" + }, + "children": [ + { + "attributes": { + "literals": ["solidity", ">=", "0.6", ".0", "<", "0.8", ".0"] + }, + "id": 3010, + "name": "PragmaDirective", + "src": "33:31:6" + }, + { + "attributes": { + "abstract": false, + "baseContracts": [null], + "contractDependencies": [null], + "contractKind": "interface", + "fullyImplemented": false, + "linearizedBaseContracts": [3086], + "name": "IERC20", + "scope": 3087 + }, + "children": [ + { + "attributes": { + "text": " @dev Interface of the ERC20 standard as defined in the EIP." + }, + "id": 3011, + "name": "StructuredDocumentation", + "src": "66:70:6" + }, + { + "attributes": { + "body": null, + "functionSelector": "18160ddd", + "implemented": false, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "totalSupply", + "overrides": null, + "scope": 3086, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the amount of tokens in existence." + }, + "id": 3012, + "name": "StructuredDocumentation", + "src": "160:66:6" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3013, + "name": "ParameterList", + "src": "251:2:6" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3017, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3014, + "name": "ElementaryTypeName", + "src": "277:7:6" + } + ], + "id": 3015, + "name": "VariableDeclaration", + "src": "277:7:6" + } + ], + "id": 3016, + "name": "ParameterList", + "src": "276:9:6" + } + ], + "id": 3017, + "name": "FunctionDefinition", + "src": "231:55:6" + }, + { + "attributes": { + "body": null, + "functionSelector": "70a08231", + "implemented": false, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "balanceOf", + "overrides": null, + "scope": 3086, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the amount of tokens owned by `account`." + }, + "id": 3018, + "name": "StructuredDocumentation", + "src": "292:72:6" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "account", + "overrides": null, + "scope": 3025, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3019, + "name": "ElementaryTypeName", + "src": "388:7:6" + } + ], + "id": 3020, + "name": "VariableDeclaration", + "src": "388:15:6" + } + ], + "id": 3021, + "name": "ParameterList", + "src": "387:17:6" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3025, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3022, + "name": "ElementaryTypeName", + "src": "428:7:6" + } + ], + "id": 3023, + "name": "VariableDeclaration", + "src": "428:7:6" + } + ], + "id": 3024, + "name": "ParameterList", + "src": "427:9:6" + } + ], + "id": 3025, + "name": "FunctionDefinition", + "src": "369:68:6" + }, + { + "attributes": { + "body": null, + "functionSelector": "a9059cbb", + "implemented": false, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "transfer", + "overrides": null, + "scope": 3086, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "id": 3026, + "name": "StructuredDocumentation", + "src": "443:209:6" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 3035, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3027, + "name": "ElementaryTypeName", + "src": "675:7:6" + } + ], + "id": 3028, + "name": "VariableDeclaration", + "src": "675:17:6" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 3035, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3029, + "name": "ElementaryTypeName", + "src": "694:7:6" + } + ], + "id": 3030, + "name": "VariableDeclaration", + "src": "694:14:6" + } + ], + "id": 3031, + "name": "ParameterList", + "src": "674:35:6" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3035, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 3032, + "name": "ElementaryTypeName", + "src": "728:4:6" + } + ], + "id": 3033, + "name": "VariableDeclaration", + "src": "728:4:6" + } + ], + "id": 3034, + "name": "ParameterList", + "src": "727:6:6" + } + ], + "id": 3035, + "name": "FunctionDefinition", + "src": "657:77:6" + }, + { + "attributes": { + "body": null, + "functionSelector": "dd62ed3e", + "implemented": false, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "allowance", + "overrides": null, + "scope": 3086, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "id": 3036, + "name": "StructuredDocumentation", + "src": "740:264:6" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "owner", + "overrides": null, + "scope": 3045, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3037, + "name": "ElementaryTypeName", + "src": "1028:7:6" + } + ], + "id": 3038, + "name": "VariableDeclaration", + "src": "1028:13:6" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 3045, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3039, + "name": "ElementaryTypeName", + "src": "1043:7:6" + } + ], + "id": 3040, + "name": "VariableDeclaration", + "src": "1043:15:6" + } + ], + "id": 3041, + "name": "ParameterList", + "src": "1027:32:6" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3045, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3042, + "name": "ElementaryTypeName", + "src": "1083:7:6" + } + ], + "id": 3043, + "name": "VariableDeclaration", + "src": "1083:7:6" + } + ], + "id": 3044, + "name": "ParameterList", + "src": "1082:9:6" + } + ], + "id": 3045, + "name": "FunctionDefinition", + "src": "1009:83:6" + }, + { + "attributes": { + "body": null, + "functionSelector": "095ea7b3", + "implemented": false, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "approve", + "overrides": null, + "scope": 3086, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "id": 3046, + "name": "StructuredDocumentation", + "src": "1098:642:6" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 3055, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3047, + "name": "ElementaryTypeName", + "src": "1762:7:6" + } + ], + "id": 3048, + "name": "VariableDeclaration", + "src": "1762:15:6" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 3055, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3049, + "name": "ElementaryTypeName", + "src": "1779:7:6" + } + ], + "id": 3050, + "name": "VariableDeclaration", + "src": "1779:14:6" + } + ], + "id": 3051, + "name": "ParameterList", + "src": "1761:33:6" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3055, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 3052, + "name": "ElementaryTypeName", + "src": "1813:4:6" + } + ], + "id": 3053, + "name": "VariableDeclaration", + "src": "1813:4:6" + } + ], + "id": 3054, + "name": "ParameterList", + "src": "1812:6:6" + } + ], + "id": 3055, + "name": "FunctionDefinition", + "src": "1745:74:6" + }, + { + "attributes": { + "body": null, + "functionSelector": "23b872dd", + "implemented": false, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "transferFrom", + "overrides": null, + "scope": 3086, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "id": 3056, + "name": "StructuredDocumentation", + "src": "1825:296:6" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "sender", + "overrides": null, + "scope": 3067, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3057, + "name": "ElementaryTypeName", + "src": "2148:7:6" + } + ], + "id": 3058, + "name": "VariableDeclaration", + "src": "2148:14:6" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 3067, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3059, + "name": "ElementaryTypeName", + "src": "2164:7:6" + } + ], + "id": 3060, + "name": "VariableDeclaration", + "src": "2164:17:6" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 3067, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3061, + "name": "ElementaryTypeName", + "src": "2183:7:6" + } + ], + "id": 3062, + "name": "VariableDeclaration", + "src": "2183:14:6" + } + ], + "id": 3063, + "name": "ParameterList", + "src": "2147:51:6" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 3067, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 3064, + "name": "ElementaryTypeName", + "src": "2217:4:6" + } + ], + "id": 3065, + "name": "VariableDeclaration", + "src": "2217:4:6" + } + ], + "id": 3066, + "name": "ParameterList", + "src": "2216:6:6" + } + ], + "id": 3067, + "name": "FunctionDefinition", + "src": "2126:97:6" + }, + { + "attributes": { + "anonymous": false, + "name": "Transfer" + }, + "children": [ + { + "attributes": { + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "id": 3068, + "name": "StructuredDocumentation", + "src": "2229:158:6" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "mutability": "mutable", + "name": "from", + "overrides": null, + "scope": 3076, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3069, + "name": "ElementaryTypeName", + "src": "2407:7:6" + } + ], + "id": 3070, + "name": "VariableDeclaration", + "src": "2407:20:6" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "mutability": "mutable", + "name": "to", + "overrides": null, + "scope": 3076, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3071, + "name": "ElementaryTypeName", + "src": "2429:7:6" + } + ], + "id": 3072, + "name": "VariableDeclaration", + "src": "2429:18:6" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "value", + "overrides": null, + "scope": 3076, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3073, + "name": "ElementaryTypeName", + "src": "2449:7:6" + } + ], + "id": 3074, + "name": "VariableDeclaration", + "src": "2449:13:6" + } + ], + "id": 3075, + "name": "ParameterList", + "src": "2406:57:6" + } + ], + "id": 3076, + "name": "EventDefinition", + "src": "2392:72:6" + }, + { + "attributes": { + "anonymous": false, + "name": "Approval" + }, + "children": [ + { + "attributes": { + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "id": 3077, + "name": "StructuredDocumentation", + "src": "2470:148:6" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "overrides": null, + "scope": 3085, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3078, + "name": "ElementaryTypeName", + "src": "2638:7:6" + } + ], + "id": 3079, + "name": "VariableDeclaration", + "src": "2638:21:6" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 3085, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3080, + "name": "ElementaryTypeName", + "src": "2661:7:6" + } + ], + "id": 3081, + "name": "VariableDeclaration", + "src": "2661:23:6" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "value", + "overrides": null, + "scope": 3085, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3082, + "name": "ElementaryTypeName", + "src": "2686:7:6" + } + ], + "id": 3083, + "name": "VariableDeclaration", + "src": "2686:13:6" + } + ], + "id": 3084, + "name": "ParameterList", + "src": "2637:63:6" + } + ], + "id": 3085, + "name": "EventDefinition", + "src": "2623:78:6" + } + ], + "id": 3086, + "name": "ContractDefinition", + "src": "137:2566:6" + } + ], + "id": 3087, + "name": "SourceUnit", + "src": "33:2671:6" + }, + "compiler": { + "name": "solc", + "version": "0.6.12+commit.27d51765.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.3.4", + "updatedAt": "2021-04-12T21:53:29.923Z", + "devdoc": { + "details": "Interface of the ERC20 standard as defined in the EIP.", + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the amount of tokens owned by `account`." + }, + "totalSupply()": { + "details": "Returns the amount of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + }, + "transferFrom(address,address,uint256)": { + "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} diff --git a/packages/bridge/contracts/ReentrancyGuard.json b/packages/bridge/contracts/ReentrancyGuard.json new file mode 100644 index 0000000..6d868b3 --- /dev/null +++ b/packages/bridge/contracts/ReentrancyGuard.json @@ -0,0 +1,1000 @@ +{ + "contractName": "ReentrancyGuard", + "abi": [], + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x8bbbc2f5c10065ee272592ae0a7a6ceb23de2fbd81564ee0bb015ecf404d5f61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b95e56c1640d0ef789fc5c16269e141e992f6c8ac97cc6d377bd3825e9cab182\",\"dweb:/ipfs/QmVzaxJZY51EhagrcNnkxoU6Uq17RhATe7aHvtkC6wUkgK\"]}},\"version\":1}", + "bytecode": "0x", + "deployedBytecode": "0x", + "immutableReferences": {}, + "sourceMap": "", + "deployedSourceMap": "", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor () internal {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and make it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n // On the first call to nonReentrant, _notEntered will be true\n require(_status != _ENTERED, \"ReentrancyGuard: reentrant call\");\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n\n _;\n\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}\n", + "sourcePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "exportedSymbols": { + "ReentrancyGuard": [3658] + }, + "id": 3659, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3620, + "literals": ["solidity", ">=", "0.6", ".0", "<", "0.8", ".0"], + "nodeType": "PragmaDirective", + "src": "33:31:10" + }, + { + "abstract": true, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 3621, + "nodeType": "StructuredDocumentation", + "src": "66:750:10", + "text": " @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]." + }, + "fullyImplemented": true, + "id": 3658, + "linearizedBaseContracts": [3658], + "name": "ReentrancyGuard", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 3624, + "mutability": "constant", + "name": "_NOT_ENTERED", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3658, + "src": "1605:41:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1605:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "31", + "id": 3623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1645:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 3627, + "mutability": "constant", + "name": "_ENTERED", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3658, + "src": "1652:37:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3625, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1652:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "32", + "id": 3626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1688:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 3629, + "mutability": "mutable", + "name": "_status", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3658, + "src": "1696:23:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3628, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1696:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3636, + "nodeType": "Block", + "src": "1750:39:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3632, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3629, + "src": "1760:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3633, + "name": "_NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3624, + "src": "1770:12:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1760:22:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3635, + "nodeType": "ExpressionStatement", + "src": "1760:22:10" + } + ] + }, + "documentation": null, + "id": 3637, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3630, + "nodeType": "ParameterList", + "parameters": [], + "src": "1738:2:10" + }, + "returnParameters": { + "id": 3631, + "nodeType": "ParameterList", + "parameters": [], + "src": "1750:0:10" + }, + "scope": 3658, + "src": "1726:63:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3656, + "nodeType": "Block", + "src": "2188:421:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3641, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3629, + "src": "2277:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 3642, + "name": "_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3627, + "src": "2288:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2277:19:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c", + "id": 3644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2298:33:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619", + "typeString": "literal_string \"ReentrancyGuard: reentrant call\"" + }, + "value": "ReentrancyGuard: reentrant call" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619", + "typeString": "literal_string \"ReentrancyGuard: reentrant call\"" + } + ], + "id": 3640, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "2269:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2269:63:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3646, + "nodeType": "ExpressionStatement", + "src": "2269:63:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 3649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3647, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3629, + "src": "2407:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3648, + "name": "_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3627, + "src": "2417:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2407:18:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3650, + "nodeType": "ExpressionStatement", + "src": "2407:18:10" + }, + { + "id": 3651, + "nodeType": "PlaceholderStatement", + "src": "2436:1:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 3654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3652, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3629, + "src": "2580:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3653, + "name": "_NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3624, + "src": "2590:12:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2580:22:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3655, + "nodeType": "ExpressionStatement", + "src": "2580:22:10" + } + ] + }, + "documentation": { + "id": 3638, + "nodeType": "StructuredDocumentation", + "src": "1795:364:10", + "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and make it call a\n `private` function that does the actual work." + }, + "id": 3657, + "name": "nonReentrant", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 3639, + "nodeType": "ParameterList", + "parameters": [], + "src": "2185:2:10" + }, + "src": "2164:445:10", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3659, + "src": "817:1794:10" + } + ], + "src": "33:2579:10" + }, + "legacyAST": { + "attributes": { + "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "exportedSymbols": { + "ReentrancyGuard": [3658] + }, + "license": "MIT" + }, + "children": [ + { + "attributes": { + "literals": ["solidity", ">=", "0.6", ".0", "<", "0.8", ".0"] + }, + "id": 3620, + "name": "PragmaDirective", + "src": "33:31:10" + }, + { + "attributes": { + "abstract": true, + "baseContracts": [null], + "contractDependencies": [null], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [3658], + "name": "ReentrancyGuard", + "scope": 3659 + }, + "children": [ + { + "attributes": { + "text": " @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]." + }, + "id": 3621, + "name": "StructuredDocumentation", + "src": "66:750:10" + }, + { + "attributes": { + "constant": true, + "mutability": "constant", + "name": "_NOT_ENTERED", + "overrides": null, + "scope": 3658, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "visibility": "private" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3622, + "name": "ElementaryTypeName", + "src": "1605:7:10" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 3623, + "name": "Literal", + "src": "1645:1:10" + } + ], + "id": 3624, + "name": "VariableDeclaration", + "src": "1605:41:10" + }, + { + "attributes": { + "constant": true, + "mutability": "constant", + "name": "_ENTERED", + "overrides": null, + "scope": 3658, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "visibility": "private" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3625, + "name": "ElementaryTypeName", + "src": "1652:7:10" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "32", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 2", + "value": "2" + }, + "id": 3626, + "name": "Literal", + "src": "1688:1:10" + } + ], + "id": 3627, + "name": "VariableDeclaration", + "src": "1652:37:10" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_status", + "overrides": null, + "scope": 3658, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "private" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3628, + "name": "ElementaryTypeName", + "src": "1696:7:10" + } + ], + "id": 3629, + "name": "VariableDeclaration", + "src": "1696:23:10" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": true, + "kind": "constructor", + "modifiers": [null], + "name": "", + "overrides": null, + "scope": 3658, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3630, + "name": "ParameterList", + "src": "1738:2:10" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3631, + "name": "ParameterList", + "src": "1750:0:10" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3629, + "type": "uint256", + "value": "_status" + }, + "id": 3632, + "name": "Identifier", + "src": "1760:7:10" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3624, + "type": "uint256", + "value": "_NOT_ENTERED" + }, + "id": 3633, + "name": "Identifier", + "src": "1770:12:10" + } + ], + "id": 3634, + "name": "Assignment", + "src": "1760:22:10" + } + ], + "id": 3635, + "name": "ExpressionStatement", + "src": "1760:22:10" + } + ], + "id": 3636, + "name": "Block", + "src": "1750:39:10" + } + ], + "id": 3637, + "name": "FunctionDefinition", + "src": "1726:63:10" + }, + { + "attributes": { + "name": "nonReentrant", + "overrides": null, + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and make it call a\n `private` function that does the actual work." + }, + "id": 3638, + "name": "StructuredDocumentation", + "src": "1795:364:10" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3639, + "name": "ParameterList", + "src": "2185:2:10" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619", + "typeString": "literal_string \"ReentrancyGuard: reentrant call\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 3640, + "name": "Identifier", + "src": "2269:7:10" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3629, + "type": "uint256", + "value": "_status" + }, + "id": 3641, + "name": "Identifier", + "src": "2277:7:10" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3627, + "type": "uint256", + "value": "_ENTERED" + }, + "id": 3642, + "name": "Identifier", + "src": "2288:8:10" + } + ], + "id": 3643, + "name": "BinaryOperation", + "src": "2277:19:10" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ReentrancyGuard: reentrant call\"", + "value": "ReentrancyGuard: reentrant call" + }, + "id": 3644, + "name": "Literal", + "src": "2298:33:10" + } + ], + "id": 3645, + "name": "FunctionCall", + "src": "2269:63:10" + } + ], + "id": 3646, + "name": "ExpressionStatement", + "src": "2269:63:10" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3629, + "type": "uint256", + "value": "_status" + }, + "id": 3647, + "name": "Identifier", + "src": "2407:7:10" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3627, + "type": "uint256", + "value": "_ENTERED" + }, + "id": 3648, + "name": "Identifier", + "src": "2417:8:10" + } + ], + "id": 3649, + "name": "Assignment", + "src": "2407:18:10" + } + ], + "id": 3650, + "name": "ExpressionStatement", + "src": "2407:18:10" + }, + { + "id": 3651, + "name": "PlaceholderStatement", + "src": "2436:1:10" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3629, + "type": "uint256", + "value": "_status" + }, + "id": 3652, + "name": "Identifier", + "src": "2580:7:10" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3624, + "type": "uint256", + "value": "_NOT_ENTERED" + }, + "id": 3653, + "name": "Identifier", + "src": "2590:12:10" + } + ], + "id": 3654, + "name": "Assignment", + "src": "2580:22:10" + } + ], + "id": 3655, + "name": "ExpressionStatement", + "src": "2580:22:10" + } + ], + "id": 3656, + "name": "Block", + "src": "2188:421:10" + } + ], + "id": 3657, + "name": "ModifierDefinition", + "src": "2164:445:10" + } + ], + "id": 3658, + "name": "ContractDefinition", + "src": "817:1794:10" + } + ], + "id": 3659, + "name": "SourceUnit", + "src": "33:2579:10" + }, + "compiler": { + "name": "solc", + "version": "0.6.12+commit.27d51765.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.3.4", + "updatedAt": "2021-04-12T21:53:29.930Z", + "devdoc": { + "details": "Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} diff --git a/packages/bridge/contracts/SafeERC20.json b/packages/bridge/contracts/SafeERC20.json new file mode 100644 index 0000000..e984cbc --- /dev/null +++ b/packages/bridge/contracts/SafeERC20.json @@ -0,0 +1,6220 @@ +{ + "contractName": "SafeERC20", + "abi": [], + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a\",\"dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]}},\"version\":1}", + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203547b9b3fa28635bb2f7e9937a35aaddcc8be9819cfe05f6d4ebbf41896ee60164736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203547b9b3fa28635bb2f7e9937a35aaddcc8be9819cfe05f6d4ebbf41896ee60164736f6c634300060c0033", + "immutableReferences": {}, + "sourceMap": "616:3104:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "616:3104:7:-:0;;;;;;;;", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n using SafeMath for uint256;\n using Address for address;\n\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */\n function safeApprove(IERC20 token, address spender, uint256 value) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n // solhint-disable-next-line max-line-length\n require((value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n );\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 newAllowance = token.allowance(address(this), spender).add(value);\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 newAllowance = token.allowance(address(this), spender).sub(value, \"SafeERC20: decreased allowance below zero\");\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n if (returndata.length > 0) { // Return data is optional\n // solhint-disable-next-line max-line-length\n require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n }\n }\n}\n", + "sourcePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [3299] + }, + "id": 3300, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3088, + "literals": ["solidity", ">=", "0.6", ".0", "<", "0.8", ".0"], + "nodeType": "PragmaDirective", + "src": "33:31:7" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 3089, + "nodeType": "ImportDirective", + "scope": 3300, + "sourceUnit": 3087, + "src": "66:22:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 3090, + "nodeType": "ImportDirective", + "scope": 3300, + "sourceUnit": 2506, + "src": "89:33:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 3091, + "nodeType": "ImportDirective", + "scope": 3300, + "sourceUnit": 3596, + "src": "123:33:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 3092, + "nodeType": "StructuredDocumentation", + "src": "158:457:7", + "text": " @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc." + }, + "fullyImplemented": true, + "id": 3299, + "linearizedBaseContracts": [3299], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 3095, + "libraryName": { + "contractScope": null, + "id": 3093, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2505, + "src": "646:8:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2505", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "640:27:7", + "typeName": { + "id": 3094, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "659:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 3098, + "libraryName": { + "contractScope": null, + "id": 3096, + "name": "Address", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3595, + "src": "678:7:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$3595", + "typeString": "library Address" + } + }, + "nodeType": "UsingForDirective", + "src": "672:26:7", + "typeName": { + "id": 3097, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "690:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "body": { + "id": 3119, + "nodeType": "Block", + "src": "776:103:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3108, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3100, + "src": "806:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3111, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3100, + "src": "836:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 3112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 3035, + "src": "836:14:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 3113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "836:23:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "id": 3114, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3102, + "src": "861:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3115, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3104, + "src": "865:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3109, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "813:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "813:22:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 3116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "813:58:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3107, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3298, + "src": "786:19:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3086_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 3117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "786:86:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3118, + "nodeType": "ExpressionStatement", + "src": "786:86:7" + } + ] + }, + "documentation": null, + "id": 3120, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3100, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3120, + "src": "726:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 3099, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3086, + "src": "726:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3102, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3120, + "src": "740:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3101, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "740:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3104, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3120, + "src": "752:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "752:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "725:41:7" + }, + "returnParameters": { + "id": 3106, + "nodeType": "ParameterList", + "parameters": [], + "src": "776:0:7" + }, + "scope": 3299, + "src": "704:175:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3144, + "nodeType": "Block", + "src": "975:113:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3132, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3122, + "src": "1005:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3135, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3122, + "src": "1035:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 3136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 3067, + "src": "1035:18:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 3137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1035:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "id": 3138, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3124, + "src": "1064:4:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3139, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3126, + "src": "1070:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3140, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3128, + "src": "1074:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3133, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1012:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1012:22:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 3141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1012:68:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3131, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3298, + "src": "985:19:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3086_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 3142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "985:96:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3143, + "nodeType": "ExpressionStatement", + "src": "985:96:7" + } + ] + }, + "documentation": null, + "id": 3145, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3122, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3145, + "src": "911:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 3121, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3086, + "src": "911:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3124, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3145, + "src": "925:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "925:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3126, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3145, + "src": "939:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "939:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3128, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3145, + "src": "951:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "951:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "910:55:7" + }, + "returnParameters": { + "id": 3130, + "nodeType": "ParameterList", + "parameters": [], + "src": "975:0:7" + }, + "scope": 3299, + "src": "885:203:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3187, + "nodeType": "Block", + "src": "1424:537:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3156, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3152, + "src": "1713:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1722:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1713:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 3159, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1712:12:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3164, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1753:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$3299", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$3299", + "typeString": "library SafeERC20" + } + ], + "id": 3163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1745:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3162, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1745:7:7", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1745:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3166, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3150, + "src": "1760:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3160, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3148, + "src": "1729:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 3161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 3045, + "src": "1729:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 3167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1729:39:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1772:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1729:44:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 3170, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1728:46:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1712:62:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365", + "id": 3172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1788:56:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25", + "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"" + }, + "value": "SafeERC20: approve from non-zero to non-zero allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25", + "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"" + } + ], + "id": 3155, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "1704:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1704:150:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3174, + "nodeType": "ExpressionStatement", + "src": "1704:150:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3176, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3148, + "src": "1884:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3179, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3148, + "src": "1914:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 3180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "1914:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 3181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1914:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "id": 3182, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3150, + "src": "1938:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3183, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3152, + "src": "1947:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3177, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1891:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1891:22:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 3184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1891:62:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3175, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3298, + "src": "1864:19:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3086_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 3185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1864:90:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3186, + "nodeType": "ExpressionStatement", + "src": "1864:90:7" + } + ] + }, + "documentation": { + "id": 3146, + "nodeType": "StructuredDocumentation", + "src": "1094:249:7", + "text": " @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead." + }, + "id": 3188, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeApprove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3153, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3148, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3188, + "src": "1369:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 3147, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3086, + "src": "1369:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3150, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3188, + "src": "1383:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3149, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1383:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3152, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3188, + "src": "1400:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3151, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1400:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1368:46:7" + }, + "returnParameters": { + "id": 3154, + "nodeType": "ParameterList", + "parameters": [], + "src": "1424:0:7" + }, + "scope": 3299, + "src": "1348:613:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3223, + "nodeType": "Block", + "src": "2053:197:7", + "statements": [ + { + "assignments": [3198], + "declarations": [ + { + "constant": false, + "id": 3198, + "mutability": "mutable", + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3223, + "src": "2063:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3197, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2063:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3210, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3208, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3194, + "src": "2130:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3203, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2110:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$3299", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$3299", + "typeString": "library SafeERC20" + } + ], + "id": 3202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2102:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3201, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2102:7:7", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2102:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3205, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3192, + "src": "2117:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3199, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3190, + "src": "2086:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 3200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 3045, + "src": "2086:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 3206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2086:39:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2332, + "src": "2086:43:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2086:50:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2063:73:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3212, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3190, + "src": "2166:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3215, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3190, + "src": "2196:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 3216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "2196:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 3217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2196:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "id": 3218, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3192, + "src": "2220:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3219, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3198, + "src": "2229:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3213, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2173:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2173:22:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 3220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2173:69:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3211, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3298, + "src": "2146:19:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3086_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 3221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2146:97:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3222, + "nodeType": "ExpressionStatement", + "src": "2146:97:7" + } + ] + }, + "documentation": null, + "id": 3224, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeIncreaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3195, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3190, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3224, + "src": "1998:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 3189, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3086, + "src": "1998:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3192, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3224, + "src": "2012:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3191, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2012:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3194, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3224, + "src": "2029:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3193, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2029:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1997:46:7" + }, + "returnParameters": { + "id": 3196, + "nodeType": "ParameterList", + "parameters": [], + "src": "2053:0:7" + }, + "scope": 3299, + "src": "1967:283:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3260, + "nodeType": "Block", + "src": "2342:242:7", + "statements": [ + { + "assignments": [3234], + "declarations": [ + { + "constant": false, + "id": 3234, + "mutability": "mutable", + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3260, + "src": "2352:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3233, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2352:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3247, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3244, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3230, + "src": "2419:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "id": 3245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2426:43:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a", + "typeString": "literal_string \"SafeERC20: decreased allowance below zero\"" + }, + "value": "SafeERC20: decreased allowance below zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a", + "typeString": "literal_string \"SafeERC20: decreased allowance below zero\"" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3239, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2399:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$3299", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$3299", + "typeString": "library SafeERC20" + } + ], + "id": 3238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2391:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3237, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2391:7:7", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2391:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3241, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3228, + "src": "2406:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3235, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3226, + "src": "2375:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 3236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 3045, + "src": "2375:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 3242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2375:39:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2456, + "src": "2375:43:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 3246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2375:95:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2352:118:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3249, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3226, + "src": "2500:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3252, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3226, + "src": "2530:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 3253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "2530:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 3254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2530:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "id": 3255, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3228, + "src": "2554:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3256, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3234, + "src": "2563:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3250, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2507:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3251, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2507:22:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 3257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2507:69:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3248, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3298, + "src": "2480:19:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3086_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 3258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2480:97:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3259, + "nodeType": "ExpressionStatement", + "src": "2480:97:7" + } + ] + }, + "documentation": null, + "id": 3261, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeDecreaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3226, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3261, + "src": "2287:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 3225, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3086, + "src": "2287:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3228, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3261, + "src": "2301:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2301:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3230, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3261, + "src": "2318:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3229, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2318:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2286:46:7" + }, + "returnParameters": { + "id": 3232, + "nodeType": "ParameterList", + "parameters": [], + "src": "2342:0:7" + }, + "scope": 3299, + "src": "2256:328:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3297, + "nodeType": "Block", + "src": "3037:681:7", + "statements": [ + { + "assignments": [3270], + "declarations": [ + { + "constant": false, + "id": 3270, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3297, + "src": "3386:23:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3269, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3386:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3279, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3276, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3266, + "src": "3440:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564", + "id": 3277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3446:34:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b", + "typeString": "literal_string \"SafeERC20: low-level call failed\"" + }, + "value": "SafeERC20: low-level call failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b", + "typeString": "literal_string \"SafeERC20: low-level call failed\"" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3273, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3264, + "src": "3420:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + ], + "id": 3272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3412:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3271, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3412:7:7", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3412:14:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "functionCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 3390, + "src": "3412:27:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$", + "typeString": "function (address,bytes memory,string memory) returns (bytes memory)" + } + }, + "id": 3278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3412:69:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3386:95:7" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3280, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3270, + "src": "3495:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3495:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3515:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3495:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3296, + "nodeType": "IfStatement", + "src": "3491:221:7", + "trueBody": { + "id": 3295, + "nodeType": "Block", + "src": "3518:194:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3287, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3270, + "src": "3635:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 3289, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3648:4:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 3288, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3648:4:7", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 3290, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3647:6:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + ], + "expression": { + "argumentTypes": null, + "id": 3285, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3624:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3624:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3624:30:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564", + "id": 3292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3656:44:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd", + "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\"" + }, + "value": "SafeERC20: ERC20 operation did not succeed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd", + "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\"" + } + ], + "id": 3284, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "3616:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3616:85:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3294, + "nodeType": "ExpressionStatement", + "src": "3616:85:7" + } + ] + } + } + ] + }, + "documentation": { + "id": 3262, + "nodeType": "StructuredDocumentation", + "src": "2590:372:7", + "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)." + }, + "id": 3298, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callOptionalReturn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3264, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3298, + "src": "2996:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 3263, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3086, + "src": "2996:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3266, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3298, + "src": "3010:17:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3265, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3010:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2995:33:7" + }, + "returnParameters": { + "id": 3268, + "nodeType": "ParameterList", + "parameters": [], + "src": "3037:0:7" + }, + "scope": 3299, + "src": "2967:751:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 3300, + "src": "616:3104:7" + } + ], + "src": "33:3688:7" + }, + "legacyAST": { + "attributes": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [3299] + }, + "license": "MIT" + }, + "children": [ + { + "attributes": { + "literals": ["solidity", ">=", "0.6", ".0", "<", "0.8", ".0"] + }, + "id": 3088, + "name": "PragmaDirective", + "src": "33:31:7" + }, + { + "attributes": { + "SourceUnit": 3087, + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "scope": 3300, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 3089, + "name": "ImportDirective", + "src": "66:22:7" + }, + { + "attributes": { + "SourceUnit": 2506, + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "scope": 3300, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 3090, + "name": "ImportDirective", + "src": "89:33:7" + }, + { + "attributes": { + "SourceUnit": 3596, + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "scope": 3300, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 3091, + "name": "ImportDirective", + "src": "123:33:7" + }, + { + "attributes": { + "abstract": false, + "baseContracts": [null], + "contractDependencies": [null], + "contractKind": "library", + "fullyImplemented": true, + "linearizedBaseContracts": [3299], + "name": "SafeERC20", + "scope": 3300 + }, + "children": [ + { + "attributes": { + "text": " @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc." + }, + "id": 3092, + "name": "StructuredDocumentation", + "src": "158:457:7" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeMath", + "referencedDeclaration": 2505, + "type": "library SafeMath" + }, + "id": 3093, + "name": "UserDefinedTypeName", + "src": "646:8:7" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3094, + "name": "ElementaryTypeName", + "src": "659:7:7" + } + ], + "id": 3095, + "name": "UsingForDirective", + "src": "640:27:7" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Address", + "referencedDeclaration": 3595, + "type": "library Address" + }, + "id": 3096, + "name": "UserDefinedTypeName", + "src": "678:7:7" + }, + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3097, + "name": "ElementaryTypeName", + "src": "690:7:7" + } + ], + "id": 3098, + "name": "UsingForDirective", + "src": "672:26:7" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "safeTransfer", + "overrides": null, + "scope": 3299, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token", + "overrides": null, + "scope": 3120, + "stateVariable": false, + "storageLocation": "default", + "type": "contract IERC20", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IERC20", + "referencedDeclaration": 3086, + "type": "contract IERC20" + }, + "id": 3099, + "name": "UserDefinedTypeName", + "src": "726:6:7" + } + ], + "id": 3100, + "name": "VariableDeclaration", + "src": "726:12:7" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "to", + "overrides": null, + "scope": 3120, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3101, + "name": "ElementaryTypeName", + "src": "740:7:7" + } + ], + "id": 3102, + "name": "VariableDeclaration", + "src": "740:10:7" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "value", + "overrides": null, + "scope": 3120, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3103, + "name": "ElementaryTypeName", + "src": "752:7:7" + } + ], + "id": 3104, + "name": "VariableDeclaration", + "src": "752:13:7" + } + ], + "id": 3105, + "name": "ParameterList", + "src": "725:41:7" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3106, + "name": "ParameterList", + "src": "776:0:7" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3298, + "type": "function (contract IERC20,bytes memory)", + "value": "_callOptionalReturn" + }, + "id": 3107, + "name": "Identifier", + "src": "786:19:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3100, + "type": "contract IERC20", + "value": "token" + }, + "id": 3108, + "name": "Identifier", + "src": "806:5:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "encodeWithSelector", + "referencedDeclaration": null, + "type": "function (bytes4) pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -1, + "type": "abi", + "value": "abi" + }, + "id": 3109, + "name": "Identifier", + "src": "813:3:7" + } + ], + "id": 3110, + "name": "MemberAccess", + "src": "813:22:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "selector", + "referencedDeclaration": null, + "type": "bytes4" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "transfer", + "referencedDeclaration": 3035, + "type": "function (address,uint256) external returns (bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3100, + "type": "contract IERC20", + "value": "token" + }, + "id": 3111, + "name": "Identifier", + "src": "836:5:7" + } + ], + "id": 3112, + "name": "MemberAccess", + "src": "836:14:7" + } + ], + "id": 3113, + "name": "MemberAccess", + "src": "836:23:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3102, + "type": "address", + "value": "to" + }, + "id": 3114, + "name": "Identifier", + "src": "861:2:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3104, + "type": "uint256", + "value": "value" + }, + "id": 3115, + "name": "Identifier", + "src": "865:5:7" + } + ], + "id": 3116, + "name": "FunctionCall", + "src": "813:58:7" + } + ], + "id": 3117, + "name": "FunctionCall", + "src": "786:86:7" + } + ], + "id": 3118, + "name": "ExpressionStatement", + "src": "786:86:7" + } + ], + "id": 3119, + "name": "Block", + "src": "776:103:7" + } + ], + "id": 3120, + "name": "FunctionDefinition", + "src": "704:175:7" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "safeTransferFrom", + "overrides": null, + "scope": 3299, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token", + "overrides": null, + "scope": 3145, + "stateVariable": false, + "storageLocation": "default", + "type": "contract IERC20", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IERC20", + "referencedDeclaration": 3086, + "type": "contract IERC20" + }, + "id": 3121, + "name": "UserDefinedTypeName", + "src": "911:6:7" + } + ], + "id": 3122, + "name": "VariableDeclaration", + "src": "911:12:7" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "from", + "overrides": null, + "scope": 3145, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3123, + "name": "ElementaryTypeName", + "src": "925:7:7" + } + ], + "id": 3124, + "name": "VariableDeclaration", + "src": "925:12:7" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "to", + "overrides": null, + "scope": 3145, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3125, + "name": "ElementaryTypeName", + "src": "939:7:7" + } + ], + "id": 3126, + "name": "VariableDeclaration", + "src": "939:10:7" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "value", + "overrides": null, + "scope": 3145, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3127, + "name": "ElementaryTypeName", + "src": "951:7:7" + } + ], + "id": 3128, + "name": "VariableDeclaration", + "src": "951:13:7" + } + ], + "id": 3129, + "name": "ParameterList", + "src": "910:55:7" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3130, + "name": "ParameterList", + "src": "975:0:7" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3298, + "type": "function (contract IERC20,bytes memory)", + "value": "_callOptionalReturn" + }, + "id": 3131, + "name": "Identifier", + "src": "985:19:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3122, + "type": "contract IERC20", + "value": "token" + }, + "id": 3132, + "name": "Identifier", + "src": "1005:5:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "encodeWithSelector", + "referencedDeclaration": null, + "type": "function (bytes4) pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -1, + "type": "abi", + "value": "abi" + }, + "id": 3133, + "name": "Identifier", + "src": "1012:3:7" + } + ], + "id": 3134, + "name": "MemberAccess", + "src": "1012:22:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "selector", + "referencedDeclaration": null, + "type": "bytes4" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "transferFrom", + "referencedDeclaration": 3067, + "type": "function (address,address,uint256) external returns (bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3122, + "type": "contract IERC20", + "value": "token" + }, + "id": 3135, + "name": "Identifier", + "src": "1035:5:7" + } + ], + "id": 3136, + "name": "MemberAccess", + "src": "1035:18:7" + } + ], + "id": 3137, + "name": "MemberAccess", + "src": "1035:27:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3124, + "type": "address", + "value": "from" + }, + "id": 3138, + "name": "Identifier", + "src": "1064:4:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3126, + "type": "address", + "value": "to" + }, + "id": 3139, + "name": "Identifier", + "src": "1070:2:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3128, + "type": "uint256", + "value": "value" + }, + "id": 3140, + "name": "Identifier", + "src": "1074:5:7" + } + ], + "id": 3141, + "name": "FunctionCall", + "src": "1012:68:7" + } + ], + "id": 3142, + "name": "FunctionCall", + "src": "985:96:7" + } + ], + "id": 3143, + "name": "ExpressionStatement", + "src": "985:96:7" + } + ], + "id": 3144, + "name": "Block", + "src": "975:113:7" + } + ], + "id": 3145, + "name": "FunctionDefinition", + "src": "885:203:7" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "safeApprove", + "overrides": null, + "scope": 3299, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead." + }, + "id": 3146, + "name": "StructuredDocumentation", + "src": "1094:249:7" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token", + "overrides": null, + "scope": 3188, + "stateVariable": false, + "storageLocation": "default", + "type": "contract IERC20", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IERC20", + "referencedDeclaration": 3086, + "type": "contract IERC20" + }, + "id": 3147, + "name": "UserDefinedTypeName", + "src": "1369:6:7" + } + ], + "id": 3148, + "name": "VariableDeclaration", + "src": "1369:12:7" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 3188, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3149, + "name": "ElementaryTypeName", + "src": "1383:7:7" + } + ], + "id": 3150, + "name": "VariableDeclaration", + "src": "1383:15:7" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "value", + "overrides": null, + "scope": 3188, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3151, + "name": "ElementaryTypeName", + "src": "1400:7:7" + } + ], + "id": 3152, + "name": "VariableDeclaration", + "src": "1400:13:7" + } + ], + "id": 3153, + "name": "ParameterList", + "src": "1368:46:7" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3154, + "name": "ParameterList", + "src": "1424:0:7" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25", + "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 3155, + "name": "Identifier", + "src": "1704:7:7" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3152, + "type": "uint256", + "value": "value" + }, + "id": 3156, + "name": "Identifier", + "src": "1713:5:7" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 3157, + "name": "Literal", + "src": "1722:1:7" + } + ], + "id": 3158, + "name": "BinaryOperation", + "src": "1713:10:7" + } + ], + "id": 3159, + "name": "TupleExpression", + "src": "1712:12:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "allowance", + "referencedDeclaration": 3045, + "type": "function (address,address) view external returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 3148, + "type": "contract IERC20", + "value": "token" + }, + "id": 3160, + "name": "Identifier", + "src": "1729:5:7" + } + ], + "id": 3161, + "name": "MemberAccess", + "src": "1729:15:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$3299", + "typeString": "library SafeERC20" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 3162, + "name": "ElementaryTypeName", + "src": "1745:7:7" + } + ], + "id": 3163, + "name": "ElementaryTypeNameExpression", + "src": "1745:7:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": -28, + "type": "library SafeERC20", + "value": "this" + }, + "id": 3164, + "name": "Identifier", + "src": "1753:4:7" + } + ], + "id": 3165, + "name": "FunctionCall", + "src": "1745:13:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3150, + "type": "address", + "value": "spender" + }, + "id": 3166, + "name": "Identifier", + "src": "1760:7:7" + } + ], + "id": 3167, + "name": "FunctionCall", + "src": "1729:39:7" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 3168, + "name": "Literal", + "src": "1772:1:7" + } + ], + "id": 3169, + "name": "BinaryOperation", + "src": "1729:44:7" + } + ], + "id": 3170, + "name": "TupleExpression", + "src": "1728:46:7" + } + ], + "id": 3171, + "name": "BinaryOperation", + "src": "1712:62:7" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"", + "value": "SafeERC20: approve from non-zero to non-zero allowance" + }, + "id": 3172, + "name": "Literal", + "src": "1788:56:7" + } + ], + "id": 3173, + "name": "FunctionCall", + "src": "1704:150:7" + } + ], + "id": 3174, + "name": "ExpressionStatement", + "src": "1704:150:7" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3298, + "type": "function (contract IERC20,bytes memory)", + "value": "_callOptionalReturn" + }, + "id": 3175, + "name": "Identifier", + "src": "1864:19:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3148, + "type": "contract IERC20", + "value": "token" + }, + "id": 3176, + "name": "Identifier", + "src": "1884:5:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "encodeWithSelector", + "referencedDeclaration": null, + "type": "function (bytes4) pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -1, + "type": "abi", + "value": "abi" + }, + "id": 3177, + "name": "Identifier", + "src": "1891:3:7" + } + ], + "id": 3178, + "name": "MemberAccess", + "src": "1891:22:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "selector", + "referencedDeclaration": null, + "type": "bytes4" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "approve", + "referencedDeclaration": 3055, + "type": "function (address,uint256) external returns (bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3148, + "type": "contract IERC20", + "value": "token" + }, + "id": 3179, + "name": "Identifier", + "src": "1914:5:7" + } + ], + "id": 3180, + "name": "MemberAccess", + "src": "1914:13:7" + } + ], + "id": 3181, + "name": "MemberAccess", + "src": "1914:22:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3150, + "type": "address", + "value": "spender" + }, + "id": 3182, + "name": "Identifier", + "src": "1938:7:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3152, + "type": "uint256", + "value": "value" + }, + "id": 3183, + "name": "Identifier", + "src": "1947:5:7" + } + ], + "id": 3184, + "name": "FunctionCall", + "src": "1891:62:7" + } + ], + "id": 3185, + "name": "FunctionCall", + "src": "1864:90:7" + } + ], + "id": 3186, + "name": "ExpressionStatement", + "src": "1864:90:7" + } + ], + "id": 3187, + "name": "Block", + "src": "1424:537:7" + } + ], + "id": 3188, + "name": "FunctionDefinition", + "src": "1348:613:7" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "safeIncreaseAllowance", + "overrides": null, + "scope": 3299, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token", + "overrides": null, + "scope": 3224, + "stateVariable": false, + "storageLocation": "default", + "type": "contract IERC20", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IERC20", + "referencedDeclaration": 3086, + "type": "contract IERC20" + }, + "id": 3189, + "name": "UserDefinedTypeName", + "src": "1998:6:7" + } + ], + "id": 3190, + "name": "VariableDeclaration", + "src": "1998:12:7" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 3224, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3191, + "name": "ElementaryTypeName", + "src": "2012:7:7" + } + ], + "id": 3192, + "name": "VariableDeclaration", + "src": "2012:15:7" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "value", + "overrides": null, + "scope": 3224, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3193, + "name": "ElementaryTypeName", + "src": "2029:7:7" + } + ], + "id": 3194, + "name": "VariableDeclaration", + "src": "2029:13:7" + } + ], + "id": 3195, + "name": "ParameterList", + "src": "1997:46:7" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3196, + "name": "ParameterList", + "src": "2053:0:7" + }, + { + "children": [ + { + "attributes": { + "assignments": [3198] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "newAllowance", + "overrides": null, + "scope": 3223, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3197, + "name": "ElementaryTypeName", + "src": "2063:7:7" + } + ], + "id": 3198, + "name": "VariableDeclaration", + "src": "2063:20:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 2332, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "allowance", + "referencedDeclaration": 3045, + "type": "function (address,address) view external returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3190, + "type": "contract IERC20", + "value": "token" + }, + "id": 3199, + "name": "Identifier", + "src": "2086:5:7" + } + ], + "id": 3200, + "name": "MemberAccess", + "src": "2086:15:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$3299", + "typeString": "library SafeERC20" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 3201, + "name": "ElementaryTypeName", + "src": "2102:7:7" + } + ], + "id": 3202, + "name": "ElementaryTypeNameExpression", + "src": "2102:7:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -28, + "type": "library SafeERC20", + "value": "this" + }, + "id": 3203, + "name": "Identifier", + "src": "2110:4:7" + } + ], + "id": 3204, + "name": "FunctionCall", + "src": "2102:13:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3192, + "type": "address", + "value": "spender" + }, + "id": 3205, + "name": "Identifier", + "src": "2117:7:7" + } + ], + "id": 3206, + "name": "FunctionCall", + "src": "2086:39:7" + } + ], + "id": 3207, + "name": "MemberAccess", + "src": "2086:43:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3194, + "type": "uint256", + "value": "value" + }, + "id": 3208, + "name": "Identifier", + "src": "2130:5:7" + } + ], + "id": 3209, + "name": "FunctionCall", + "src": "2086:50:7" + } + ], + "id": 3210, + "name": "VariableDeclarationStatement", + "src": "2063:73:7" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3298, + "type": "function (contract IERC20,bytes memory)", + "value": "_callOptionalReturn" + }, + "id": 3211, + "name": "Identifier", + "src": "2146:19:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3190, + "type": "contract IERC20", + "value": "token" + }, + "id": 3212, + "name": "Identifier", + "src": "2166:5:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "encodeWithSelector", + "referencedDeclaration": null, + "type": "function (bytes4) pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -1, + "type": "abi", + "value": "abi" + }, + "id": 3213, + "name": "Identifier", + "src": "2173:3:7" + } + ], + "id": 3214, + "name": "MemberAccess", + "src": "2173:22:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "selector", + "referencedDeclaration": null, + "type": "bytes4" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "approve", + "referencedDeclaration": 3055, + "type": "function (address,uint256) external returns (bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3190, + "type": "contract IERC20", + "value": "token" + }, + "id": 3215, + "name": "Identifier", + "src": "2196:5:7" + } + ], + "id": 3216, + "name": "MemberAccess", + "src": "2196:13:7" + } + ], + "id": 3217, + "name": "MemberAccess", + "src": "2196:22:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3192, + "type": "address", + "value": "spender" + }, + "id": 3218, + "name": "Identifier", + "src": "2220:7:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3198, + "type": "uint256", + "value": "newAllowance" + }, + "id": 3219, + "name": "Identifier", + "src": "2229:12:7" + } + ], + "id": 3220, + "name": "FunctionCall", + "src": "2173:69:7" + } + ], + "id": 3221, + "name": "FunctionCall", + "src": "2146:97:7" + } + ], + "id": 3222, + "name": "ExpressionStatement", + "src": "2146:97:7" + } + ], + "id": 3223, + "name": "Block", + "src": "2053:197:7" + } + ], + "id": 3224, + "name": "FunctionDefinition", + "src": "1967:283:7" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "safeDecreaseAllowance", + "overrides": null, + "scope": 3299, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token", + "overrides": null, + "scope": 3261, + "stateVariable": false, + "storageLocation": "default", + "type": "contract IERC20", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IERC20", + "referencedDeclaration": 3086, + "type": "contract IERC20" + }, + "id": 3225, + "name": "UserDefinedTypeName", + "src": "2287:6:7" + } + ], + "id": 3226, + "name": "VariableDeclaration", + "src": "2287:12:7" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 3261, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 3227, + "name": "ElementaryTypeName", + "src": "2301:7:7" + } + ], + "id": 3228, + "name": "VariableDeclaration", + "src": "2301:15:7" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "value", + "overrides": null, + "scope": 3261, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3229, + "name": "ElementaryTypeName", + "src": "2318:7:7" + } + ], + "id": 3230, + "name": "VariableDeclaration", + "src": "2318:13:7" + } + ], + "id": 3231, + "name": "ParameterList", + "src": "2286:46:7" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3232, + "name": "ParameterList", + "src": "2342:0:7" + }, + { + "children": [ + { + "attributes": { + "assignments": [3234] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "newAllowance", + "overrides": null, + "scope": 3260, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 3233, + "name": "ElementaryTypeName", + "src": "2352:7:7" + } + ], + "id": 3234, + "name": "VariableDeclaration", + "src": "2352:20:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a", + "typeString": "literal_string \"SafeERC20: decreased allowance below zero\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 2456, + "type": "function (uint256,uint256,string memory) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "allowance", + "referencedDeclaration": 3045, + "type": "function (address,address) view external returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3226, + "type": "contract IERC20", + "value": "token" + }, + "id": 3235, + "name": "Identifier", + "src": "2375:5:7" + } + ], + "id": 3236, + "name": "MemberAccess", + "src": "2375:15:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$3299", + "typeString": "library SafeERC20" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 3237, + "name": "ElementaryTypeName", + "src": "2391:7:7" + } + ], + "id": 3238, + "name": "ElementaryTypeNameExpression", + "src": "2391:7:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -28, + "type": "library SafeERC20", + "value": "this" + }, + "id": 3239, + "name": "Identifier", + "src": "2399:4:7" + } + ], + "id": 3240, + "name": "FunctionCall", + "src": "2391:13:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3228, + "type": "address", + "value": "spender" + }, + "id": 3241, + "name": "Identifier", + "src": "2406:7:7" + } + ], + "id": 3242, + "name": "FunctionCall", + "src": "2375:39:7" + } + ], + "id": 3243, + "name": "MemberAccess", + "src": "2375:43:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3230, + "type": "uint256", + "value": "value" + }, + "id": 3244, + "name": "Identifier", + "src": "2419:5:7" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"SafeERC20: decreased allowance below zero\"", + "value": "SafeERC20: decreased allowance below zero" + }, + "id": 3245, + "name": "Literal", + "src": "2426:43:7" + } + ], + "id": 3246, + "name": "FunctionCall", + "src": "2375:95:7" + } + ], + "id": 3247, + "name": "VariableDeclarationStatement", + "src": "2352:118:7" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3298, + "type": "function (contract IERC20,bytes memory)", + "value": "_callOptionalReturn" + }, + "id": 3248, + "name": "Identifier", + "src": "2480:19:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3226, + "type": "contract IERC20", + "value": "token" + }, + "id": 3249, + "name": "Identifier", + "src": "2500:5:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "encodeWithSelector", + "referencedDeclaration": null, + "type": "function (bytes4) pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -1, + "type": "abi", + "value": "abi" + }, + "id": 3250, + "name": "Identifier", + "src": "2507:3:7" + } + ], + "id": 3251, + "name": "MemberAccess", + "src": "2507:22:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "selector", + "referencedDeclaration": null, + "type": "bytes4" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "approve", + "referencedDeclaration": 3055, + "type": "function (address,uint256) external returns (bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3226, + "type": "contract IERC20", + "value": "token" + }, + "id": 3252, + "name": "Identifier", + "src": "2530:5:7" + } + ], + "id": 3253, + "name": "MemberAccess", + "src": "2530:13:7" + } + ], + "id": 3254, + "name": "MemberAccess", + "src": "2530:22:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3228, + "type": "address", + "value": "spender" + }, + "id": 3255, + "name": "Identifier", + "src": "2554:7:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3234, + "type": "uint256", + "value": "newAllowance" + }, + "id": 3256, + "name": "Identifier", + "src": "2563:12:7" + } + ], + "id": 3257, + "name": "FunctionCall", + "src": "2507:69:7" + } + ], + "id": 3258, + "name": "FunctionCall", + "src": "2480:97:7" + } + ], + "id": 3259, + "name": "ExpressionStatement", + "src": "2480:97:7" + } + ], + "id": 3260, + "name": "Block", + "src": "2342:242:7" + } + ], + "id": 3261, + "name": "FunctionDefinition", + "src": "2256:328:7" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_callOptionalReturn", + "overrides": null, + "scope": 3299, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + "children": [ + { + "attributes": { + "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)." + }, + "id": 3262, + "name": "StructuredDocumentation", + "src": "2590:372:7" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token", + "overrides": null, + "scope": 3298, + "stateVariable": false, + "storageLocation": "default", + "type": "contract IERC20", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IERC20", + "referencedDeclaration": 3086, + "type": "contract IERC20" + }, + "id": 3263, + "name": "UserDefinedTypeName", + "src": "2996:6:7" + } + ], + "id": 3264, + "name": "VariableDeclaration", + "src": "2996:12:7" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 3298, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3265, + "name": "ElementaryTypeName", + "src": "3010:5:7" + } + ], + "id": 3266, + "name": "VariableDeclaration", + "src": "3010:17:7" + } + ], + "id": 3267, + "name": "ParameterList", + "src": "2995:33:7" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 3268, + "name": "ParameterList", + "src": "3037:0:7" + }, + { + "children": [ + { + "attributes": { + "assignments": [3270] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "returndata", + "overrides": null, + "scope": 3297, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 3269, + "name": "ElementaryTypeName", + "src": "3386:5:7" + } + ], + "id": 3270, + "name": "VariableDeclaration", + "src": "3386:23:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b", + "typeString": "literal_string \"SafeERC20: low-level call failed\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "functionCall", + "referencedDeclaration": 3390, + "type": "function (address,bytes memory,string memory) returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 3271, + "name": "ElementaryTypeName", + "src": "3412:7:7" + } + ], + "id": 3272, + "name": "ElementaryTypeNameExpression", + "src": "3412:7:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3264, + "type": "contract IERC20", + "value": "token" + }, + "id": 3273, + "name": "Identifier", + "src": "3420:5:7" + } + ], + "id": 3274, + "name": "FunctionCall", + "src": "3412:14:7" + } + ], + "id": 3275, + "name": "MemberAccess", + "src": "3412:27:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3266, + "type": "bytes memory", + "value": "data" + }, + "id": 3276, + "name": "Identifier", + "src": "3440:4:7" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"SafeERC20: low-level call failed\"", + "value": "SafeERC20: low-level call failed" + }, + "id": 3277, + "name": "Literal", + "src": "3446:34:7" + } + ], + "id": 3278, + "name": "FunctionCall", + "src": "3412:69:7" + } + ], + "id": 3279, + "name": "VariableDeclarationStatement", + "src": "3386:95:7" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3270, + "type": "bytes memory", + "value": "returndata" + }, + "id": 3280, + "name": "Identifier", + "src": "3495:10:7" + } + ], + "id": 3281, + "name": "MemberAccess", + "src": "3495:17:7" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 3282, + "name": "Literal", + "src": "3515:1:7" + } + ], + "id": 3283, + "name": "BinaryOperation", + "src": "3495:21:7" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd", + "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 3284, + "name": "Identifier", + "src": "3616:7:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "decode", + "referencedDeclaration": null, + "type": "function () pure" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -1, + "type": "abi", + "value": "abi" + }, + "id": 3285, + "name": "Identifier", + "src": "3624:3:7" + } + ], + "id": 3286, + "name": "MemberAccess", + "src": "3624:10:7" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3270, + "type": "bytes memory", + "value": "returndata" + }, + "id": 3287, + "name": "Identifier", + "src": "3635:10:7" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bool)" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": null + }, + "id": 3288, + "name": "ElementaryTypeName", + "src": "3648:4:7" + } + ], + "id": 3289, + "name": "ElementaryTypeNameExpression", + "src": "3648:4:7" + } + ], + "id": 3290, + "name": "TupleExpression", + "src": "3647:6:7" + } + ], + "id": 3291, + "name": "FunctionCall", + "src": "3624:30:7" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"SafeERC20: ERC20 operation did not succeed\"", + "value": "SafeERC20: ERC20 operation did not succeed" + }, + "id": 3292, + "name": "Literal", + "src": "3656:44:7" + } + ], + "id": 3293, + "name": "FunctionCall", + "src": "3616:85:7" + } + ], + "id": 3294, + "name": "ExpressionStatement", + "src": "3616:85:7" + } + ], + "id": 3295, + "name": "Block", + "src": "3518:194:7" + } + ], + "id": 3296, + "name": "IfStatement", + "src": "3491:221:7" + } + ], + "id": 3297, + "name": "Block", + "src": "3037:681:7" + } + ], + "id": 3298, + "name": "FunctionDefinition", + "src": "2967:751:7" + } + ], + "id": 3299, + "name": "ContractDefinition", + "src": "616:3104:7" + } + ], + "id": 3300, + "name": "SourceUnit", + "src": "33:3688:7" + }, + "compiler": { + "name": "solc", + "version": "0.6.12+commit.27d51765.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.3.4", + "updatedAt": "2021-04-12T21:53:29.924Z", + "devdoc": { + "details": "Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.", + "kind": "dev", + "methods": {}, + "title": "SafeERC20", + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} diff --git a/packages/bridge/contracts/SafeMath.json b/packages/bridge/contracts/SafeMath.json new file mode 100644 index 0000000..8a23589 --- /dev/null +++ b/packages/bridge/contracts/SafeMath.json @@ -0,0 +1,9420 @@ +{ + "contractName": "SafeMath", + "abi": [], + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]}},\"version\":1}", + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122055f9260f387617f8a3c61d823235142789395d0039759e4f776f3b7674fd13ce64736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122055f9260f387617f8a3c61d823235142789395d0039759e4f776f3b7674fd13ce64736f6c634300060c0033", + "immutableReferences": {}, + "sourceMap": "630:6594:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "630:6594:4:-:0;;;;;;;;", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n uint256 c = a + b;\n if (c < a) return (false, 0);\n return (true, c);\n }\n\n /**\n * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n if (b > a) return (false, 0);\n return (true, a - b);\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a, \"SafeMath: addition overflow\");\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b <= a, \"SafeMath: subtraction overflow\");\n return a - b;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n if (a == 0) return 0;\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n return c;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b > 0, \"SafeMath: division by zero\");\n return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b > 0, \"SafeMath: modulo by zero\");\n return a % b;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b <= a, errorMessage);\n return a - b;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryDiv}.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b > 0, errorMessage);\n return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b > 0, errorMessage);\n return a % b;\n }\n}\n", + "sourcePath": "@openzeppelin/contracts/math/SafeMath.sol", + "ast": { + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [2505] + }, + "id": 2506, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2152, + "literals": ["solidity", ">=", "0.6", ".0", "<", "0.8", ".0"], + "nodeType": "PragmaDirective", + "src": "33:31:4" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2153, + "nodeType": "StructuredDocumentation", + "src": "66:563:4", + "text": " @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always." + }, + "fullyImplemented": true, + "id": 2505, + "linearizedBaseContracts": [2505], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2183, + "nodeType": "Block", + "src": "865:98:4", + "statements": [ + { + "assignments": [2166], + "declarations": [ + { + "constant": false, + "id": 2166, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2183, + "src": "875:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2165, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "875:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2170, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2167, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2156, + "src": "887:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 2168, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2158, + "src": "891:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "887:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "875:17:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2171, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2166, + "src": "906:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 2172, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2156, + "src": "910:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "906:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2178, + "nodeType": "IfStatement", + "src": "902:28:4", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "921:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 2175, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "928:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 2176, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "920:10:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 2164, + "id": 2177, + "nodeType": "Return", + "src": "913:17:4" + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2179, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "948:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "id": 2180, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2166, + "src": "954:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2181, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "947:9:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 2164, + "id": 2182, + "nodeType": "Return", + "src": "940:16:4" + } + ] + }, + "documentation": { + "id": 2154, + "nodeType": "StructuredDocumentation", + "src": "653:131:4", + "text": " @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._" + }, + "id": 2184, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryAdd", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2156, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2184, + "src": "805:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2155, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "805:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2158, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2184, + "src": "816:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "816:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "804:22:4" + }, + "returnParameters": { + "id": 2164, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2161, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2184, + "src": "850:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2160, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "850:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2163, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2184, + "src": "856:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "856:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "849:15:4" + }, + "scope": 2505, + "src": "789:174:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2210, + "nodeType": "Block", + "src": "1185:75:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2196, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2189, + "src": "1199:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2197, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2187, + "src": "1203:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1199:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2203, + "nodeType": "IfStatement", + "src": "1195:28:4", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1214:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 2200, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1221:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 2201, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1213:10:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 2195, + "id": 2202, + "nodeType": "Return", + "src": "1206:17:4" + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1241:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2205, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2187, + "src": "1247:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 2206, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2189, + "src": "1251:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1247:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2208, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1240:13:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 2195, + "id": 2209, + "nodeType": "Return", + "src": "1233:20:4" + } + ] + }, + "documentation": { + "id": 2185, + "nodeType": "StructuredDocumentation", + "src": "969:135:4", + "text": " @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._" + }, + "id": 2211, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "trySub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2187, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2211, + "src": "1125:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2186, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1125:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2189, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2211, + "src": "1136:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2188, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1124:22:4" + }, + "returnParameters": { + "id": 2195, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2192, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2211, + "src": "1170:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2191, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1170:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2194, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2211, + "src": "1176:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2193, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1176:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1169:15:4" + }, + "scope": 2505, + "src": "1109:151:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2251, + "nodeType": "Block", + "src": "1484:359:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2223, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2214, + "src": "1716:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1721:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1716:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2230, + "nodeType": "IfStatement", + "src": "1712:28:4", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2226, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1732:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 2227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1738:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 2228, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1731:9:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 2222, + "id": 2229, + "nodeType": "Return", + "src": "1724:16:4" + } + }, + { + "assignments": [2232], + "declarations": [ + { + "constant": false, + "id": 2232, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2251, + "src": "1750:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2231, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1750:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2236, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2233, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2214, + "src": "1762:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 2234, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2216, + "src": "1766:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1762:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1750:17:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2237, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2232, + "src": "1781:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2238, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2214, + "src": "1785:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1781:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 2240, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2216, + "src": "1790:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1781:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2246, + "nodeType": "IfStatement", + "src": "1777:33:4", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2242, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1801:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 2243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1808:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 2244, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1800:10:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 2222, + "id": 2245, + "nodeType": "Return", + "src": "1793:17:4" + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1828:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "id": 2248, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2232, + "src": "1834:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2249, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1827:9:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 2222, + "id": 2250, + "nodeType": "Return", + "src": "1820:16:4" + } + ] + }, + "documentation": { + "id": 2212, + "nodeType": "StructuredDocumentation", + "src": "1266:137:4", + "text": " @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._" + }, + "id": 2252, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryMul", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2217, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2214, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2252, + "src": "1424:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2213, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1424:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2216, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2252, + "src": "1435:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2215, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1435:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1423:22:4" + }, + "returnParameters": { + "id": 2222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2219, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2252, + "src": "1469:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2218, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1469:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2221, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2252, + "src": "1475:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2220, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1475:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1468:15:4" + }, + "scope": 2505, + "src": "1408:435:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2278, + "nodeType": "Block", + "src": "2068:76:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2264, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2257, + "src": "2082:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2087:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2082:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2271, + "nodeType": "IfStatement", + "src": "2078:29:4", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2098:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 2268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2105:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 2269, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2097:10:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 2263, + "id": 2270, + "nodeType": "Return", + "src": "2090:17:4" + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2125:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2273, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2255, + "src": "2131:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2274, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2257, + "src": "2135:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2131:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2276, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2124:13:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 2263, + "id": 2277, + "nodeType": "Return", + "src": "2117:20:4" + } + ] + }, + "documentation": { + "id": 2253, + "nodeType": "StructuredDocumentation", + "src": "1849:138:4", + "text": " @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._" + }, + "id": 2279, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryDiv", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2255, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2279, + "src": "2008:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2254, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2008:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2257, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2279, + "src": "2019:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2256, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2019:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2007:22:4" + }, + "returnParameters": { + "id": 2263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2260, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2279, + "src": "2053:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2259, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2053:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2262, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2279, + "src": "2059:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2059:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2052:15:4" + }, + "scope": 2505, + "src": "1992:152:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2305, + "nodeType": "Block", + "src": "2379:76:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2291, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2284, + "src": "2393:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2398:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2393:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2298, + "nodeType": "IfStatement", + "src": "2389:29:4", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2409:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 2295, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2416:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 2296, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2408:10:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 2290, + "id": 2297, + "nodeType": "Return", + "src": "2401:17:4" + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2436:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2300, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2282, + "src": "2442:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 2301, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2284, + "src": "2446:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2442:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2303, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2435:13:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 2290, + "id": 2304, + "nodeType": "Return", + "src": "2428:20:4" + } + ] + }, + "documentation": { + "id": 2280, + "nodeType": "StructuredDocumentation", + "src": "2150:148:4", + "text": " @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._" + }, + "id": 2306, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryMod", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2282, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2306, + "src": "2319:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2281, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2319:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2284, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2306, + "src": "2330:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2283, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2330:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2318:22:4" + }, + "returnParameters": { + "id": 2290, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2287, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2306, + "src": "2364:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2286, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2364:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2289, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2306, + "src": "2370:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2288, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2370:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2363:15:4" + }, + "scope": 2505, + "src": "2303:152:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2331, + "nodeType": "Block", + "src": "2757:108:4", + "statements": [ + { + "assignments": [2317], + "declarations": [ + { + "constant": false, + "id": 2317, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2331, + "src": "2767:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2767:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2321, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2318, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2779:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 2319, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2311, + "src": "2783:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2779:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2767:17:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2323, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2317, + "src": "2802:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 2324, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2807:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2802:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "id": 2326, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2810:29:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", + "typeString": "literal_string \"SafeMath: addition overflow\"" + }, + "value": "SafeMath: addition overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", + "typeString": "literal_string \"SafeMath: addition overflow\"" + } + ], + "id": 2322, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "2794:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2794:46:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2328, + "nodeType": "ExpressionStatement", + "src": "2794:46:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2329, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2317, + "src": "2857:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2315, + "id": 2330, + "nodeType": "Return", + "src": "2850:8:4" + } + ] + }, + "documentation": { + "id": 2307, + "nodeType": "StructuredDocumentation", + "src": "2461:224:4", + "text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow." + }, + "id": 2332, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2309, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2332, + "src": "2703:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2703:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2311, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2332, + "src": "2714:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2714:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2702:22:4" + }, + "returnParameters": { + "id": 2315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2314, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2332, + "src": "2748:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2313, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2748:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2747:9:4" + }, + "scope": 2505, + "src": "2690:175:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2353, + "nodeType": "Block", + "src": "3203:88:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2343, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2337, + "src": "3221:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 2344, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "3226:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3221:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", + "id": 2346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3229:32:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + }, + "value": "SafeMath: subtraction overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + } + ], + "id": 2342, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "3213:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3213:49:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2348, + "nodeType": "ExpressionStatement", + "src": "3213:49:4" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2349, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "3279:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 2350, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2337, + "src": "3283:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3279:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2341, + "id": 2352, + "nodeType": "Return", + "src": "3272:12:4" + } + ] + }, + "documentation": { + "id": 2333, + "nodeType": "StructuredDocumentation", + "src": "2871:260:4", + "text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." + }, + "id": 2354, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2335, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2354, + "src": "3149:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2334, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3149:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2337, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2354, + "src": "3160:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2336, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3160:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3148:22:4" + }, + "returnParameters": { + "id": 2341, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2340, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2354, + "src": "3194:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2339, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3194:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3193:9:4" + }, + "scope": 2505, + "src": "3136:155:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2387, + "nodeType": "Block", + "src": "3605:148:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2364, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2357, + "src": "3619:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3624:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3619:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2369, + "nodeType": "IfStatement", + "src": "3615:20:4", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3634:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 2363, + "id": 2368, + "nodeType": "Return", + "src": "3627:8:4" + } + }, + { + "assignments": [2371], + "declarations": [ + { + "constant": false, + "id": 2371, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2387, + "src": "3645:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3645:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2375, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2372, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2357, + "src": "3657:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 2373, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2359, + "src": "3661:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3657:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3645:17:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2377, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2371, + "src": "3680:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2378, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2357, + "src": "3684:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3680:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2380, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2359, + "src": "3689:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3680:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", + "id": 2382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3692:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", + "typeString": "literal_string \"SafeMath: multiplication overflow\"" + }, + "value": "SafeMath: multiplication overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", + "typeString": "literal_string \"SafeMath: multiplication overflow\"" + } + ], + "id": 2376, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "3672:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3672:56:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2384, + "nodeType": "ExpressionStatement", + "src": "3672:56:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2385, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2371, + "src": "3745:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2363, + "id": 2386, + "nodeType": "Return", + "src": "3738:8:4" + } + ] + }, + "documentation": { + "id": 2355, + "nodeType": "StructuredDocumentation", + "src": "3297:236:4", + "text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow." + }, + "id": 2388, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2360, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2357, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2388, + "src": "3551:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2356, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3551:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2359, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2388, + "src": "3562:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3562:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3550:22:4" + }, + "returnParameters": { + "id": 2363, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2362, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2388, + "src": "3596:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2361, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3596:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3595:9:4" + }, + "scope": 2505, + "src": "3538:215:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2409, + "nodeType": "Block", + "src": "4284:83:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2399, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "4302:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4306:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4302:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f", + "id": 2402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4309:28:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + }, + "value": "SafeMath: division by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + } + ], + "id": 2398, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4294:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4294:44:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2404, + "nodeType": "ExpressionStatement", + "src": "4294:44:4" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2405, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2391, + "src": "4355:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2406, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "4359:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4355:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2397, + "id": 2408, + "nodeType": "Return", + "src": "4348:12:4" + } + ] + }, + "documentation": { + "id": 2389, + "nodeType": "StructuredDocumentation", + "src": "3759:453:4", + "text": " @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 2410, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2391, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2410, + "src": "4230:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4230:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2393, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2410, + "src": "4241:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4241:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4229:22:4" + }, + "returnParameters": { + "id": 2397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2396, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2410, + "src": "4275:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4275:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4274:9:4" + }, + "scope": 2505, + "src": "4217:150:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2431, + "nodeType": "Block", + "src": "4887:81:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2421, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2415, + "src": "4905:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4909:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4905:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f", + "id": 2424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4912:26:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + }, + "value": "SafeMath: modulo by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + } + ], + "id": 2420, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4897:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4897:42:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2426, + "nodeType": "ExpressionStatement", + "src": "4897:42:4" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2427, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2413, + "src": "4956:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 2428, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2415, + "src": "4960:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4956:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2419, + "id": 2430, + "nodeType": "Return", + "src": "4949:12:4" + } + ] + }, + "documentation": { + "id": 2411, + "nodeType": "StructuredDocumentation", + "src": "4373:442:4", + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 2432, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2416, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2413, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2432, + "src": "4833:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2412, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4833:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2415, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2432, + "src": "4844:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2414, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4844:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4832:22:4" + }, + "returnParameters": { + "id": 2419, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2418, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2432, + "src": "4878:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2417, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4878:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4877:9:4" + }, + "scope": 2505, + "src": "4820:148:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2455, + "nodeType": "Block", + "src": "5527:68:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2445, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2437, + "src": "5545:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 2446, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2435, + "src": "5550:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5545:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 2448, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2439, + "src": "5553:12:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 2444, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "5537:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5537:29:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2450, + "nodeType": "ExpressionStatement", + "src": "5537:29:4" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2451, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2435, + "src": "5583:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 2452, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2437, + "src": "5587:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5583:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2443, + "id": 2454, + "nodeType": "Return", + "src": "5576:12:4" + } + ] + }, + "documentation": { + "id": 2433, + "nodeType": "StructuredDocumentation", + "src": "4974:453:4", + "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." + }, + "id": 2456, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2435, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2456, + "src": "5445:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2434, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5445:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2437, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2456, + "src": "5456:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2436, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5456:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2439, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2456, + "src": "5467:26:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2438, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5467:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5444:50:4" + }, + "returnParameters": { + "id": 2443, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2442, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2456, + "src": "5518:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2441, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5518:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5517:9:4" + }, + "scope": 2505, + "src": "5432:163:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2479, + "nodeType": "Block", + "src": "6347:67:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2469, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2461, + "src": "6365:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6369:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6365:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 2472, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "6372:12:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 2468, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "6357:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6357:28:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2474, + "nodeType": "ExpressionStatement", + "src": "6357:28:4" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2475, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "6402:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2476, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2461, + "src": "6406:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6402:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2467, + "id": 2478, + "nodeType": "Return", + "src": "6395:12:4" + } + ] + }, + "documentation": { + "id": 2457, + "nodeType": "StructuredDocumentation", + "src": "5601:646:4", + "text": " @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryDiv}.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 2480, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2459, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2480, + "src": "6265:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2458, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6265:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2461, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2480, + "src": "6276:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2460, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6276:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2463, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2480, + "src": "6287:26:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2462, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6287:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6264:50:4" + }, + "returnParameters": { + "id": 2467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2466, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2480, + "src": "6338:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6338:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6337:9:4" + }, + "scope": 2505, + "src": "6252:162:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2503, + "nodeType": "Block", + "src": "7155:67:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2493, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2485, + "src": "7173:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2494, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7177:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7173:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 2496, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2487, + "src": "7180:12:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 2492, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "7165:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7165:28:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2498, + "nodeType": "ExpressionStatement", + "src": "7165:28:4" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2499, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2483, + "src": "7210:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 2500, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2485, + "src": "7214:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7210:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2491, + "id": 2502, + "nodeType": "Return", + "src": "7203:12:4" + } + ] + }, + "documentation": { + "id": 2481, + "nodeType": "StructuredDocumentation", + "src": "6420:635:4", + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 2504, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2483, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2504, + "src": "7073:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7073:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2485, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2504, + "src": "7084:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2484, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7084:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2487, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2504, + "src": "7095:26:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2486, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7095:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7072:50:4" + }, + "returnParameters": { + "id": 2491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2490, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2504, + "src": "7146:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2489, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7146:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7145:9:4" + }, + "scope": 2505, + "src": "7060:162:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2506, + "src": "630:6594:4" + } + ], + "src": "33:7192:4" + }, + "legacyAST": { + "attributes": { + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [2505] + }, + "license": "MIT" + }, + "children": [ + { + "attributes": { + "literals": ["solidity", ">=", "0.6", ".0", "<", "0.8", ".0"] + }, + "id": 2152, + "name": "PragmaDirective", + "src": "33:31:4" + }, + { + "attributes": { + "abstract": false, + "baseContracts": [null], + "contractDependencies": [null], + "contractKind": "library", + "fullyImplemented": true, + "linearizedBaseContracts": [2505], + "name": "SafeMath", + "scope": 2506 + }, + "children": [ + { + "attributes": { + "text": " @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always." + }, + "id": 2153, + "name": "StructuredDocumentation", + "src": "66:563:4" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "tryAdd", + "overrides": null, + "scope": 2505, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._" + }, + "id": 2154, + "name": "StructuredDocumentation", + "src": "653:131:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "a", + "overrides": null, + "scope": 2184, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2155, + "name": "ElementaryTypeName", + "src": "805:7:4" + } + ], + "id": 2156, + "name": "VariableDeclaration", + "src": "805:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "b", + "overrides": null, + "scope": 2184, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2157, + "name": "ElementaryTypeName", + "src": "816:7:4" + } + ], + "id": 2158, + "name": "VariableDeclaration", + "src": "816:9:4" + } + ], + "id": 2159, + "name": "ParameterList", + "src": "804:22:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2184, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 2160, + "name": "ElementaryTypeName", + "src": "850:4:4" + } + ], + "id": 2161, + "name": "VariableDeclaration", + "src": "850:4:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2184, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2162, + "name": "ElementaryTypeName", + "src": "856:7:4" + } + ], + "id": 2163, + "name": "VariableDeclaration", + "src": "856:7:4" + } + ], + "id": 2164, + "name": "ParameterList", + "src": "849:15:4" + }, + { + "children": [ + { + "attributes": { + "assignments": [2166] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "c", + "overrides": null, + "scope": 2183, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2165, + "name": "ElementaryTypeName", + "src": "875:7:4" + } + ], + "id": 2166, + "name": "VariableDeclaration", + "src": "875:9:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2156, + "type": "uint256", + "value": "a" + }, + "id": 2167, + "name": "Identifier", + "src": "887:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2158, + "type": "uint256", + "value": "b" + }, + "id": 2168, + "name": "Identifier", + "src": "891:1:4" + } + ], + "id": 2169, + "name": "BinaryOperation", + "src": "887:5:4" + } + ], + "id": 2170, + "name": "VariableDeclarationStatement", + "src": "875:17:4" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2166, + "type": "uint256", + "value": "c" + }, + "id": 2171, + "name": "Identifier", + "src": "906:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2156, + "type": "uint256", + "value": "a" + }, + "id": 2172, + "name": "Identifier", + "src": "910:1:4" + } + ], + "id": 2173, + "name": "BinaryOperation", + "src": "906:5:4" + }, + { + "attributes": { + "functionReturnParameters": 2164 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "tuple(bool,int_const 0)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "66616c7365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "false" + }, + "id": 2174, + "name": "Literal", + "src": "921:5:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2175, + "name": "Literal", + "src": "928:1:4" + } + ], + "id": 2176, + "name": "TupleExpression", + "src": "920:10:4" + } + ], + "id": 2177, + "name": "Return", + "src": "913:17:4" + } + ], + "id": 2178, + "name": "IfStatement", + "src": "902:28:4" + }, + { + "attributes": { + "functionReturnParameters": 2164 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "tuple(bool,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 2179, + "name": "Literal", + "src": "948:4:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2166, + "type": "uint256", + "value": "c" + }, + "id": 2180, + "name": "Identifier", + "src": "954:1:4" + } + ], + "id": 2181, + "name": "TupleExpression", + "src": "947:9:4" + } + ], + "id": 2182, + "name": "Return", + "src": "940:16:4" + } + ], + "id": 2183, + "name": "Block", + "src": "865:98:4" + } + ], + "id": 2184, + "name": "FunctionDefinition", + "src": "789:174:4" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "trySub", + "overrides": null, + "scope": 2505, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._" + }, + "id": 2185, + "name": "StructuredDocumentation", + "src": "969:135:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "a", + "overrides": null, + "scope": 2211, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2186, + "name": "ElementaryTypeName", + "src": "1125:7:4" + } + ], + "id": 2187, + "name": "VariableDeclaration", + "src": "1125:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "b", + "overrides": null, + "scope": 2211, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2188, + "name": "ElementaryTypeName", + "src": "1136:7:4" + } + ], + "id": 2189, + "name": "VariableDeclaration", + "src": "1136:9:4" + } + ], + "id": 2190, + "name": "ParameterList", + "src": "1124:22:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2211, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 2191, + "name": "ElementaryTypeName", + "src": "1170:4:4" + } + ], + "id": 2192, + "name": "VariableDeclaration", + "src": "1170:4:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2211, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2193, + "name": "ElementaryTypeName", + "src": "1176:7:4" + } + ], + "id": 2194, + "name": "VariableDeclaration", + "src": "1176:7:4" + } + ], + "id": 2195, + "name": "ParameterList", + "src": "1169:15:4" + }, + { + "children": [ + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2189, + "type": "uint256", + "value": "b" + }, + "id": 2196, + "name": "Identifier", + "src": "1199:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2187, + "type": "uint256", + "value": "a" + }, + "id": 2197, + "name": "Identifier", + "src": "1203:1:4" + } + ], + "id": 2198, + "name": "BinaryOperation", + "src": "1199:5:4" + }, + { + "attributes": { + "functionReturnParameters": 2195 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "tuple(bool,int_const 0)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "66616c7365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "false" + }, + "id": 2199, + "name": "Literal", + "src": "1214:5:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2200, + "name": "Literal", + "src": "1221:1:4" + } + ], + "id": 2201, + "name": "TupleExpression", + "src": "1213:10:4" + } + ], + "id": 2202, + "name": "Return", + "src": "1206:17:4" + } + ], + "id": 2203, + "name": "IfStatement", + "src": "1195:28:4" + }, + { + "attributes": { + "functionReturnParameters": 2195 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "tuple(bool,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 2204, + "name": "Literal", + "src": "1241:4:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2187, + "type": "uint256", + "value": "a" + }, + "id": 2205, + "name": "Identifier", + "src": "1247:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2189, + "type": "uint256", + "value": "b" + }, + "id": 2206, + "name": "Identifier", + "src": "1251:1:4" + } + ], + "id": 2207, + "name": "BinaryOperation", + "src": "1247:5:4" + } + ], + "id": 2208, + "name": "TupleExpression", + "src": "1240:13:4" + } + ], + "id": 2209, + "name": "Return", + "src": "1233:20:4" + } + ], + "id": 2210, + "name": "Block", + "src": "1185:75:4" + } + ], + "id": 2211, + "name": "FunctionDefinition", + "src": "1109:151:4" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "tryMul", + "overrides": null, + "scope": 2505, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._" + }, + "id": 2212, + "name": "StructuredDocumentation", + "src": "1266:137:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "a", + "overrides": null, + "scope": 2252, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2213, + "name": "ElementaryTypeName", + "src": "1424:7:4" + } + ], + "id": 2214, + "name": "VariableDeclaration", + "src": "1424:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "b", + "overrides": null, + "scope": 2252, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2215, + "name": "ElementaryTypeName", + "src": "1435:7:4" + } + ], + "id": 2216, + "name": "VariableDeclaration", + "src": "1435:9:4" + } + ], + "id": 2217, + "name": "ParameterList", + "src": "1423:22:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2252, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 2218, + "name": "ElementaryTypeName", + "src": "1469:4:4" + } + ], + "id": 2219, + "name": "VariableDeclaration", + "src": "1469:4:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2252, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2220, + "name": "ElementaryTypeName", + "src": "1475:7:4" + } + ], + "id": 2221, + "name": "VariableDeclaration", + "src": "1475:7:4" + } + ], + "id": 2222, + "name": "ParameterList", + "src": "1468:15:4" + }, + { + "children": [ + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2214, + "type": "uint256", + "value": "a" + }, + "id": 2223, + "name": "Identifier", + "src": "1716:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2224, + "name": "Literal", + "src": "1721:1:4" + } + ], + "id": 2225, + "name": "BinaryOperation", + "src": "1716:6:4" + }, + { + "attributes": { + "functionReturnParameters": 2222 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "tuple(bool,int_const 0)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 2226, + "name": "Literal", + "src": "1732:4:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2227, + "name": "Literal", + "src": "1738:1:4" + } + ], + "id": 2228, + "name": "TupleExpression", + "src": "1731:9:4" + } + ], + "id": 2229, + "name": "Return", + "src": "1724:16:4" + } + ], + "id": 2230, + "name": "IfStatement", + "src": "1712:28:4" + }, + { + "attributes": { + "assignments": [2232] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "c", + "overrides": null, + "scope": 2251, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2231, + "name": "ElementaryTypeName", + "src": "1750:7:4" + } + ], + "id": 2232, + "name": "VariableDeclaration", + "src": "1750:9:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2214, + "type": "uint256", + "value": "a" + }, + "id": 2233, + "name": "Identifier", + "src": "1762:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2216, + "type": "uint256", + "value": "b" + }, + "id": 2234, + "name": "Identifier", + "src": "1766:1:4" + } + ], + "id": 2235, + "name": "BinaryOperation", + "src": "1762:5:4" + } + ], + "id": 2236, + "name": "VariableDeclarationStatement", + "src": "1750:17:4" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2232, + "type": "uint256", + "value": "c" + }, + "id": 2237, + "name": "Identifier", + "src": "1781:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2214, + "type": "uint256", + "value": "a" + }, + "id": 2238, + "name": "Identifier", + "src": "1785:1:4" + } + ], + "id": 2239, + "name": "BinaryOperation", + "src": "1781:5:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2216, + "type": "uint256", + "value": "b" + }, + "id": 2240, + "name": "Identifier", + "src": "1790:1:4" + } + ], + "id": 2241, + "name": "BinaryOperation", + "src": "1781:10:4" + }, + { + "attributes": { + "functionReturnParameters": 2222 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "tuple(bool,int_const 0)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "66616c7365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "false" + }, + "id": 2242, + "name": "Literal", + "src": "1801:5:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2243, + "name": "Literal", + "src": "1808:1:4" + } + ], + "id": 2244, + "name": "TupleExpression", + "src": "1800:10:4" + } + ], + "id": 2245, + "name": "Return", + "src": "1793:17:4" + } + ], + "id": 2246, + "name": "IfStatement", + "src": "1777:33:4" + }, + { + "attributes": { + "functionReturnParameters": 2222 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "tuple(bool,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 2247, + "name": "Literal", + "src": "1828:4:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2232, + "type": "uint256", + "value": "c" + }, + "id": 2248, + "name": "Identifier", + "src": "1834:1:4" + } + ], + "id": 2249, + "name": "TupleExpression", + "src": "1827:9:4" + } + ], + "id": 2250, + "name": "Return", + "src": "1820:16:4" + } + ], + "id": 2251, + "name": "Block", + "src": "1484:359:4" + } + ], + "id": 2252, + "name": "FunctionDefinition", + "src": "1408:435:4" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "tryDiv", + "overrides": null, + "scope": 2505, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._" + }, + "id": 2253, + "name": "StructuredDocumentation", + "src": "1849:138:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "a", + "overrides": null, + "scope": 2279, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2254, + "name": "ElementaryTypeName", + "src": "2008:7:4" + } + ], + "id": 2255, + "name": "VariableDeclaration", + "src": "2008:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "b", + "overrides": null, + "scope": 2279, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2256, + "name": "ElementaryTypeName", + "src": "2019:7:4" + } + ], + "id": 2257, + "name": "VariableDeclaration", + "src": "2019:9:4" + } + ], + "id": 2258, + "name": "ParameterList", + "src": "2007:22:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2279, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 2259, + "name": "ElementaryTypeName", + "src": "2053:4:4" + } + ], + "id": 2260, + "name": "VariableDeclaration", + "src": "2053:4:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2279, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2261, + "name": "ElementaryTypeName", + "src": "2059:7:4" + } + ], + "id": 2262, + "name": "VariableDeclaration", + "src": "2059:7:4" + } + ], + "id": 2263, + "name": "ParameterList", + "src": "2052:15:4" + }, + { + "children": [ + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2257, + "type": "uint256", + "value": "b" + }, + "id": 2264, + "name": "Identifier", + "src": "2082:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2265, + "name": "Literal", + "src": "2087:1:4" + } + ], + "id": 2266, + "name": "BinaryOperation", + "src": "2082:6:4" + }, + { + "attributes": { + "functionReturnParameters": 2263 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "tuple(bool,int_const 0)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "66616c7365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "false" + }, + "id": 2267, + "name": "Literal", + "src": "2098:5:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2268, + "name": "Literal", + "src": "2105:1:4" + } + ], + "id": 2269, + "name": "TupleExpression", + "src": "2097:10:4" + } + ], + "id": 2270, + "name": "Return", + "src": "2090:17:4" + } + ], + "id": 2271, + "name": "IfStatement", + "src": "2078:29:4" + }, + { + "attributes": { + "functionReturnParameters": 2263 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "tuple(bool,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 2272, + "name": "Literal", + "src": "2125:4:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2255, + "type": "uint256", + "value": "a" + }, + "id": 2273, + "name": "Identifier", + "src": "2131:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2257, + "type": "uint256", + "value": "b" + }, + "id": 2274, + "name": "Identifier", + "src": "2135:1:4" + } + ], + "id": 2275, + "name": "BinaryOperation", + "src": "2131:5:4" + } + ], + "id": 2276, + "name": "TupleExpression", + "src": "2124:13:4" + } + ], + "id": 2277, + "name": "Return", + "src": "2117:20:4" + } + ], + "id": 2278, + "name": "Block", + "src": "2068:76:4" + } + ], + "id": 2279, + "name": "FunctionDefinition", + "src": "1992:152:4" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "tryMod", + "overrides": null, + "scope": 2505, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._" + }, + "id": 2280, + "name": "StructuredDocumentation", + "src": "2150:148:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "a", + "overrides": null, + "scope": 2306, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2281, + "name": "ElementaryTypeName", + "src": "2319:7:4" + } + ], + "id": 2282, + "name": "VariableDeclaration", + "src": "2319:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "b", + "overrides": null, + "scope": 2306, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2283, + "name": "ElementaryTypeName", + "src": "2330:7:4" + } + ], + "id": 2284, + "name": "VariableDeclaration", + "src": "2330:9:4" + } + ], + "id": 2285, + "name": "ParameterList", + "src": "2318:22:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2306, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 2286, + "name": "ElementaryTypeName", + "src": "2364:4:4" + } + ], + "id": 2287, + "name": "VariableDeclaration", + "src": "2364:4:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2306, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2288, + "name": "ElementaryTypeName", + "src": "2370:7:4" + } + ], + "id": 2289, + "name": "VariableDeclaration", + "src": "2370:7:4" + } + ], + "id": 2290, + "name": "ParameterList", + "src": "2363:15:4" + }, + { + "children": [ + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2284, + "type": "uint256", + "value": "b" + }, + "id": 2291, + "name": "Identifier", + "src": "2393:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2292, + "name": "Literal", + "src": "2398:1:4" + } + ], + "id": 2293, + "name": "BinaryOperation", + "src": "2393:6:4" + }, + { + "attributes": { + "functionReturnParameters": 2290 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "tuple(bool,int_const 0)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "66616c7365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "false" + }, + "id": 2294, + "name": "Literal", + "src": "2409:5:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2295, + "name": "Literal", + "src": "2416:1:4" + } + ], + "id": 2296, + "name": "TupleExpression", + "src": "2408:10:4" + } + ], + "id": 2297, + "name": "Return", + "src": "2401:17:4" + } + ], + "id": 2298, + "name": "IfStatement", + "src": "2389:29:4" + }, + { + "attributes": { + "functionReturnParameters": 2290 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "tuple(bool,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 2299, + "name": "Literal", + "src": "2436:4:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "%", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2282, + "type": "uint256", + "value": "a" + }, + "id": 2300, + "name": "Identifier", + "src": "2442:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2284, + "type": "uint256", + "value": "b" + }, + "id": 2301, + "name": "Identifier", + "src": "2446:1:4" + } + ], + "id": 2302, + "name": "BinaryOperation", + "src": "2442:5:4" + } + ], + "id": 2303, + "name": "TupleExpression", + "src": "2435:13:4" + } + ], + "id": 2304, + "name": "Return", + "src": "2428:20:4" + } + ], + "id": 2305, + "name": "Block", + "src": "2379:76:4" + } + ], + "id": 2306, + "name": "FunctionDefinition", + "src": "2303:152:4" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "add", + "overrides": null, + "scope": 2505, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow." + }, + "id": 2307, + "name": "StructuredDocumentation", + "src": "2461:224:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "a", + "overrides": null, + "scope": 2332, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2308, + "name": "ElementaryTypeName", + "src": "2703:7:4" + } + ], + "id": 2309, + "name": "VariableDeclaration", + "src": "2703:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "b", + "overrides": null, + "scope": 2332, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2310, + "name": "ElementaryTypeName", + "src": "2714:7:4" + } + ], + "id": 2311, + "name": "VariableDeclaration", + "src": "2714:9:4" + } + ], + "id": 2312, + "name": "ParameterList", + "src": "2702:22:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2332, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2313, + "name": "ElementaryTypeName", + "src": "2748:7:4" + } + ], + "id": 2314, + "name": "VariableDeclaration", + "src": "2748:7:4" + } + ], + "id": 2315, + "name": "ParameterList", + "src": "2747:9:4" + }, + { + "children": [ + { + "attributes": { + "assignments": [2317] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "c", + "overrides": null, + "scope": 2331, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2316, + "name": "ElementaryTypeName", + "src": "2767:7:4" + } + ], + "id": 2317, + "name": "VariableDeclaration", + "src": "2767:9:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2309, + "type": "uint256", + "value": "a" + }, + "id": 2318, + "name": "Identifier", + "src": "2779:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2311, + "type": "uint256", + "value": "b" + }, + "id": 2319, + "name": "Identifier", + "src": "2783:1:4" + } + ], + "id": 2320, + "name": "BinaryOperation", + "src": "2779:5:4" + } + ], + "id": 2321, + "name": "VariableDeclarationStatement", + "src": "2767:17:4" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", + "typeString": "literal_string \"SafeMath: addition overflow\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2322, + "name": "Identifier", + "src": "2794:7:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2317, + "type": "uint256", + "value": "c" + }, + "id": 2323, + "name": "Identifier", + "src": "2802:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2309, + "type": "uint256", + "value": "a" + }, + "id": 2324, + "name": "Identifier", + "src": "2807:1:4" + } + ], + "id": 2325, + "name": "BinaryOperation", + "src": "2802:6:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"SafeMath: addition overflow\"", + "value": "SafeMath: addition overflow" + }, + "id": 2326, + "name": "Literal", + "src": "2810:29:4" + } + ], + "id": 2327, + "name": "FunctionCall", + "src": "2794:46:4" + } + ], + "id": 2328, + "name": "ExpressionStatement", + "src": "2794:46:4" + }, + { + "attributes": { + "functionReturnParameters": 2315 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2317, + "type": "uint256", + "value": "c" + }, + "id": 2329, + "name": "Identifier", + "src": "2857:1:4" + } + ], + "id": 2330, + "name": "Return", + "src": "2850:8:4" + } + ], + "id": 2331, + "name": "Block", + "src": "2757:108:4" + } + ], + "id": 2332, + "name": "FunctionDefinition", + "src": "2690:175:4" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "sub", + "overrides": null, + "scope": 2505, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." + }, + "id": 2333, + "name": "StructuredDocumentation", + "src": "2871:260:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "a", + "overrides": null, + "scope": 2354, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2334, + "name": "ElementaryTypeName", + "src": "3149:7:4" + } + ], + "id": 2335, + "name": "VariableDeclaration", + "src": "3149:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "b", + "overrides": null, + "scope": 2354, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2336, + "name": "ElementaryTypeName", + "src": "3160:7:4" + } + ], + "id": 2337, + "name": "VariableDeclaration", + "src": "3160:9:4" + } + ], + "id": 2338, + "name": "ParameterList", + "src": "3148:22:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2354, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2339, + "name": "ElementaryTypeName", + "src": "3194:7:4" + } + ], + "id": 2340, + "name": "VariableDeclaration", + "src": "3194:7:4" + } + ], + "id": 2341, + "name": "ParameterList", + "src": "3193:9:4" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2342, + "name": "Identifier", + "src": "3213:7:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2337, + "type": "uint256", + "value": "b" + }, + "id": 2343, + "name": "Identifier", + "src": "3221:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2335, + "type": "uint256", + "value": "a" + }, + "id": 2344, + "name": "Identifier", + "src": "3226:1:4" + } + ], + "id": 2345, + "name": "BinaryOperation", + "src": "3221:6:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"SafeMath: subtraction overflow\"", + "value": "SafeMath: subtraction overflow" + }, + "id": 2346, + "name": "Literal", + "src": "3229:32:4" + } + ], + "id": 2347, + "name": "FunctionCall", + "src": "3213:49:4" + } + ], + "id": 2348, + "name": "ExpressionStatement", + "src": "3213:49:4" + }, + { + "attributes": { + "functionReturnParameters": 2341 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2335, + "type": "uint256", + "value": "a" + }, + "id": 2349, + "name": "Identifier", + "src": "3279:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2337, + "type": "uint256", + "value": "b" + }, + "id": 2350, + "name": "Identifier", + "src": "3283:1:4" + } + ], + "id": 2351, + "name": "BinaryOperation", + "src": "3279:5:4" + } + ], + "id": 2352, + "name": "Return", + "src": "3272:12:4" + } + ], + "id": 2353, + "name": "Block", + "src": "3203:88:4" + } + ], + "id": 2354, + "name": "FunctionDefinition", + "src": "3136:155:4" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "mul", + "overrides": null, + "scope": 2505, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow." + }, + "id": 2355, + "name": "StructuredDocumentation", + "src": "3297:236:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "a", + "overrides": null, + "scope": 2388, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2356, + "name": "ElementaryTypeName", + "src": "3551:7:4" + } + ], + "id": 2357, + "name": "VariableDeclaration", + "src": "3551:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "b", + "overrides": null, + "scope": 2388, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2358, + "name": "ElementaryTypeName", + "src": "3562:7:4" + } + ], + "id": 2359, + "name": "VariableDeclaration", + "src": "3562:9:4" + } + ], + "id": 2360, + "name": "ParameterList", + "src": "3550:22:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2388, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2361, + "name": "ElementaryTypeName", + "src": "3596:7:4" + } + ], + "id": 2362, + "name": "VariableDeclaration", + "src": "3596:7:4" + } + ], + "id": 2363, + "name": "ParameterList", + "src": "3595:9:4" + }, + { + "children": [ + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2357, + "type": "uint256", + "value": "a" + }, + "id": 2364, + "name": "Identifier", + "src": "3619:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2365, + "name": "Literal", + "src": "3624:1:4" + } + ], + "id": 2366, + "name": "BinaryOperation", + "src": "3619:6:4" + }, + { + "attributes": { + "functionReturnParameters": 2363 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2367, + "name": "Literal", + "src": "3634:1:4" + } + ], + "id": 2368, + "name": "Return", + "src": "3627:8:4" + } + ], + "id": 2369, + "name": "IfStatement", + "src": "3615:20:4" + }, + { + "attributes": { + "assignments": [2371] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "c", + "overrides": null, + "scope": 2387, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2370, + "name": "ElementaryTypeName", + "src": "3645:7:4" + } + ], + "id": 2371, + "name": "VariableDeclaration", + "src": "3645:9:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2357, + "type": "uint256", + "value": "a" + }, + "id": 2372, + "name": "Identifier", + "src": "3657:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2359, + "type": "uint256", + "value": "b" + }, + "id": 2373, + "name": "Identifier", + "src": "3661:1:4" + } + ], + "id": 2374, + "name": "BinaryOperation", + "src": "3657:5:4" + } + ], + "id": 2375, + "name": "VariableDeclarationStatement", + "src": "3645:17:4" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", + "typeString": "literal_string \"SafeMath: multiplication overflow\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2376, + "name": "Identifier", + "src": "3672:7:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2371, + "type": "uint256", + "value": "c" + }, + "id": 2377, + "name": "Identifier", + "src": "3680:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2357, + "type": "uint256", + "value": "a" + }, + "id": 2378, + "name": "Identifier", + "src": "3684:1:4" + } + ], + "id": 2379, + "name": "BinaryOperation", + "src": "3680:5:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2359, + "type": "uint256", + "value": "b" + }, + "id": 2380, + "name": "Identifier", + "src": "3689:1:4" + } + ], + "id": 2381, + "name": "BinaryOperation", + "src": "3680:10:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"SafeMath: multiplication overflow\"", + "value": "SafeMath: multiplication overflow" + }, + "id": 2382, + "name": "Literal", + "src": "3692:35:4" + } + ], + "id": 2383, + "name": "FunctionCall", + "src": "3672:56:4" + } + ], + "id": 2384, + "name": "ExpressionStatement", + "src": "3672:56:4" + }, + { + "attributes": { + "functionReturnParameters": 2363 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2371, + "type": "uint256", + "value": "c" + }, + "id": 2385, + "name": "Identifier", + "src": "3745:1:4" + } + ], + "id": 2386, + "name": "Return", + "src": "3738:8:4" + } + ], + "id": 2387, + "name": "Block", + "src": "3605:148:4" + } + ], + "id": 2388, + "name": "FunctionDefinition", + "src": "3538:215:4" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "div", + "overrides": null, + "scope": 2505, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 2389, + "name": "StructuredDocumentation", + "src": "3759:453:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "a", + "overrides": null, + "scope": 2410, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2390, + "name": "ElementaryTypeName", + "src": "4230:7:4" + } + ], + "id": 2391, + "name": "VariableDeclaration", + "src": "4230:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "b", + "overrides": null, + "scope": 2410, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2392, + "name": "ElementaryTypeName", + "src": "4241:7:4" + } + ], + "id": 2393, + "name": "VariableDeclaration", + "src": "4241:9:4" + } + ], + "id": 2394, + "name": "ParameterList", + "src": "4229:22:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2410, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2395, + "name": "ElementaryTypeName", + "src": "4275:7:4" + } + ], + "id": 2396, + "name": "VariableDeclaration", + "src": "4275:7:4" + } + ], + "id": 2397, + "name": "ParameterList", + "src": "4274:9:4" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2398, + "name": "Identifier", + "src": "4294:7:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2393, + "type": "uint256", + "value": "b" + }, + "id": 2399, + "name": "Identifier", + "src": "4302:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2400, + "name": "Literal", + "src": "4306:1:4" + } + ], + "id": 2401, + "name": "BinaryOperation", + "src": "4302:5:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "536166654d6174683a206469766973696f6e206279207a65726f", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"SafeMath: division by zero\"", + "value": "SafeMath: division by zero" + }, + "id": 2402, + "name": "Literal", + "src": "4309:28:4" + } + ], + "id": 2403, + "name": "FunctionCall", + "src": "4294:44:4" + } + ], + "id": 2404, + "name": "ExpressionStatement", + "src": "4294:44:4" + }, + { + "attributes": { + "functionReturnParameters": 2397 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2391, + "type": "uint256", + "value": "a" + }, + "id": 2405, + "name": "Identifier", + "src": "4355:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2393, + "type": "uint256", + "value": "b" + }, + "id": 2406, + "name": "Identifier", + "src": "4359:1:4" + } + ], + "id": 2407, + "name": "BinaryOperation", + "src": "4355:5:4" + } + ], + "id": 2408, + "name": "Return", + "src": "4348:12:4" + } + ], + "id": 2409, + "name": "Block", + "src": "4284:83:4" + } + ], + "id": 2410, + "name": "FunctionDefinition", + "src": "4217:150:4" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "mod", + "overrides": null, + "scope": 2505, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 2411, + "name": "StructuredDocumentation", + "src": "4373:442:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "a", + "overrides": null, + "scope": 2432, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2412, + "name": "ElementaryTypeName", + "src": "4833:7:4" + } + ], + "id": 2413, + "name": "VariableDeclaration", + "src": "4833:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "b", + "overrides": null, + "scope": 2432, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2414, + "name": "ElementaryTypeName", + "src": "4844:7:4" + } + ], + "id": 2415, + "name": "VariableDeclaration", + "src": "4844:9:4" + } + ], + "id": 2416, + "name": "ParameterList", + "src": "4832:22:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2432, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2417, + "name": "ElementaryTypeName", + "src": "4878:7:4" + } + ], + "id": 2418, + "name": "VariableDeclaration", + "src": "4878:7:4" + } + ], + "id": 2419, + "name": "ParameterList", + "src": "4877:9:4" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2420, + "name": "Identifier", + "src": "4897:7:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2415, + "type": "uint256", + "value": "b" + }, + "id": 2421, + "name": "Identifier", + "src": "4905:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2422, + "name": "Literal", + "src": "4909:1:4" + } + ], + "id": 2423, + "name": "BinaryOperation", + "src": "4905:5:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "536166654d6174683a206d6f64756c6f206279207a65726f", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"SafeMath: modulo by zero\"", + "value": "SafeMath: modulo by zero" + }, + "id": 2424, + "name": "Literal", + "src": "4912:26:4" + } + ], + "id": 2425, + "name": "FunctionCall", + "src": "4897:42:4" + } + ], + "id": 2426, + "name": "ExpressionStatement", + "src": "4897:42:4" + }, + { + "attributes": { + "functionReturnParameters": 2419 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "%", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2413, + "type": "uint256", + "value": "a" + }, + "id": 2427, + "name": "Identifier", + "src": "4956:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2415, + "type": "uint256", + "value": "b" + }, + "id": 2428, + "name": "Identifier", + "src": "4960:1:4" + } + ], + "id": 2429, + "name": "BinaryOperation", + "src": "4956:5:4" + } + ], + "id": 2430, + "name": "Return", + "src": "4949:12:4" + } + ], + "id": 2431, + "name": "Block", + "src": "4887:81:4" + } + ], + "id": 2432, + "name": "FunctionDefinition", + "src": "4820:148:4" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "sub", + "overrides": null, + "scope": 2505, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." + }, + "id": 2433, + "name": "StructuredDocumentation", + "src": "4974:453:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "a", + "overrides": null, + "scope": 2456, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2434, + "name": "ElementaryTypeName", + "src": "5445:7:4" + } + ], + "id": 2435, + "name": "VariableDeclaration", + "src": "5445:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "b", + "overrides": null, + "scope": 2456, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2436, + "name": "ElementaryTypeName", + "src": "5456:7:4" + } + ], + "id": 2437, + "name": "VariableDeclaration", + "src": "5456:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "errorMessage", + "overrides": null, + "scope": 2456, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 2438, + "name": "ElementaryTypeName", + "src": "5467:6:4" + } + ], + "id": 2439, + "name": "VariableDeclaration", + "src": "5467:26:4" + } + ], + "id": 2440, + "name": "ParameterList", + "src": "5444:50:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2456, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2441, + "name": "ElementaryTypeName", + "src": "5518:7:4" + } + ], + "id": 2442, + "name": "VariableDeclaration", + "src": "5518:7:4" + } + ], + "id": 2443, + "name": "ParameterList", + "src": "5517:9:4" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2444, + "name": "Identifier", + "src": "5537:7:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2437, + "type": "uint256", + "value": "b" + }, + "id": 2445, + "name": "Identifier", + "src": "5545:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2435, + "type": "uint256", + "value": "a" + }, + "id": 2446, + "name": "Identifier", + "src": "5550:1:4" + } + ], + "id": 2447, + "name": "BinaryOperation", + "src": "5545:6:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2439, + "type": "string memory", + "value": "errorMessage" + }, + "id": 2448, + "name": "Identifier", + "src": "5553:12:4" + } + ], + "id": 2449, + "name": "FunctionCall", + "src": "5537:29:4" + } + ], + "id": 2450, + "name": "ExpressionStatement", + "src": "5537:29:4" + }, + { + "attributes": { + "functionReturnParameters": 2443 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2435, + "type": "uint256", + "value": "a" + }, + "id": 2451, + "name": "Identifier", + "src": "5583:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2437, + "type": "uint256", + "value": "b" + }, + "id": 2452, + "name": "Identifier", + "src": "5587:1:4" + } + ], + "id": 2453, + "name": "BinaryOperation", + "src": "5583:5:4" + } + ], + "id": 2454, + "name": "Return", + "src": "5576:12:4" + } + ], + "id": 2455, + "name": "Block", + "src": "5527:68:4" + } + ], + "id": 2456, + "name": "FunctionDefinition", + "src": "5432:163:4" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "div", + "overrides": null, + "scope": 2505, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryDiv}.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 2457, + "name": "StructuredDocumentation", + "src": "5601:646:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "a", + "overrides": null, + "scope": 2480, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2458, + "name": "ElementaryTypeName", + "src": "6265:7:4" + } + ], + "id": 2459, + "name": "VariableDeclaration", + "src": "6265:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "b", + "overrides": null, + "scope": 2480, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2460, + "name": "ElementaryTypeName", + "src": "6276:7:4" + } + ], + "id": 2461, + "name": "VariableDeclaration", + "src": "6276:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "errorMessage", + "overrides": null, + "scope": 2480, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 2462, + "name": "ElementaryTypeName", + "src": "6287:6:4" + } + ], + "id": 2463, + "name": "VariableDeclaration", + "src": "6287:26:4" + } + ], + "id": 2464, + "name": "ParameterList", + "src": "6264:50:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2480, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2465, + "name": "ElementaryTypeName", + "src": "6338:7:4" + } + ], + "id": 2466, + "name": "VariableDeclaration", + "src": "6338:7:4" + } + ], + "id": 2467, + "name": "ParameterList", + "src": "6337:9:4" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2468, + "name": "Identifier", + "src": "6357:7:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2461, + "type": "uint256", + "value": "b" + }, + "id": 2469, + "name": "Identifier", + "src": "6365:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2470, + "name": "Literal", + "src": "6369:1:4" + } + ], + "id": 2471, + "name": "BinaryOperation", + "src": "6365:5:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2463, + "type": "string memory", + "value": "errorMessage" + }, + "id": 2472, + "name": "Identifier", + "src": "6372:12:4" + } + ], + "id": 2473, + "name": "FunctionCall", + "src": "6357:28:4" + } + ], + "id": 2474, + "name": "ExpressionStatement", + "src": "6357:28:4" + }, + { + "attributes": { + "functionReturnParameters": 2467 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2459, + "type": "uint256", + "value": "a" + }, + "id": 2475, + "name": "Identifier", + "src": "6402:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2461, + "type": "uint256", + "value": "b" + }, + "id": 2476, + "name": "Identifier", + "src": "6406:1:4" + } + ], + "id": 2477, + "name": "BinaryOperation", + "src": "6402:5:4" + } + ], + "id": 2478, + "name": "Return", + "src": "6395:12:4" + } + ], + "id": 2479, + "name": "Block", + "src": "6347:67:4" + } + ], + "id": 2480, + "name": "FunctionDefinition", + "src": "6252:162:4" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "mod", + "overrides": null, + "scope": 2505, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 2481, + "name": "StructuredDocumentation", + "src": "6420:635:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "a", + "overrides": null, + "scope": 2504, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2482, + "name": "ElementaryTypeName", + "src": "7073:7:4" + } + ], + "id": 2483, + "name": "VariableDeclaration", + "src": "7073:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "b", + "overrides": null, + "scope": 2504, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2484, + "name": "ElementaryTypeName", + "src": "7084:7:4" + } + ], + "id": 2485, + "name": "VariableDeclaration", + "src": "7084:9:4" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "errorMessage", + "overrides": null, + "scope": 2504, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 2486, + "name": "ElementaryTypeName", + "src": "7095:6:4" + } + ], + "id": 2487, + "name": "VariableDeclaration", + "src": "7095:26:4" + } + ], + "id": 2488, + "name": "ParameterList", + "src": "7072:50:4" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 2504, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2489, + "name": "ElementaryTypeName", + "src": "7146:7:4" + } + ], + "id": 2490, + "name": "VariableDeclaration", + "src": "7146:7:4" + } + ], + "id": 2491, + "name": "ParameterList", + "src": "7145:9:4" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2492, + "name": "Identifier", + "src": "7165:7:4" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2485, + "type": "uint256", + "value": "b" + }, + "id": 2493, + "name": "Identifier", + "src": "7173:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2494, + "name": "Literal", + "src": "7177:1:4" + } + ], + "id": 2495, + "name": "BinaryOperation", + "src": "7173:5:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2487, + "type": "string memory", + "value": "errorMessage" + }, + "id": 2496, + "name": "Identifier", + "src": "7180:12:4" + } + ], + "id": 2497, + "name": "FunctionCall", + "src": "7165:28:4" + } + ], + "id": 2498, + "name": "ExpressionStatement", + "src": "7165:28:4" + }, + { + "attributes": { + "functionReturnParameters": 2491 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "%", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2483, + "type": "uint256", + "value": "a" + }, + "id": 2499, + "name": "Identifier", + "src": "7210:1:4" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2485, + "type": "uint256", + "value": "b" + }, + "id": 2500, + "name": "Identifier", + "src": "7214:1:4" + } + ], + "id": 2501, + "name": "BinaryOperation", + "src": "7210:5:4" + } + ], + "id": 2502, + "name": "Return", + "src": "7203:12:4" + } + ], + "id": 2503, + "name": "Block", + "src": "7155:67:4" + } + ], + "id": 2504, + "name": "FunctionDefinition", + "src": "7060:162:4" + } + ], + "id": 2505, + "name": "ContractDefinition", + "src": "630:6594:4" + } + ], + "id": 2506, + "name": "SourceUnit", + "src": "33:7192:4" + }, + "compiler": { + "name": "solc", + "version": "0.6.12+commit.27d51765.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.3.4", + "updatedAt": "2021-04-12T21:53:29.915Z", + "devdoc": { + "details": "Wrappers over Solidity's arithmetic operations with added overflow checks. Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} diff --git a/packages/bridge/contracts/WETH.json b/packages/bridge/contracts/WETH.json new file mode 100644 index 0000000..47241fa --- /dev/null +++ b/packages/bridge/contracts/WETH.json @@ -0,0 +1,32099 @@ +{ + "contractName": "WETH", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/Wormhole.sol\":\"WETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/BytesLib.sol\":{\"keccak256\":\"0x4a28e69afc4c1c1aee48c7b497f9b8452b295ddcf4bbf453d594a1467016d5f2\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://279e22c43f79567e9f7842cfca8ad2329bbbad2eac30413b620796d51f308719\",\"dweb:/ipfs/QmbdRLJYoKJxDbDLeverNMHsNFEcxnohAA713UFLjLm3Jy\"]},\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/Wormhole.sol\":{\"keccak256\":\"0xdbd8e88a0a6cb69b6edc83c34d3c51a67560cb0a88d52e908c6d391435242999\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://630e2d852c4e534cff7d1beb00c3fc165a73d6e3a7ee394c5850cbf4047b0a32\",\"dweb:/ipfs/QmUe3mc6HwXCoL1Q6NACA4kMb6mavMKdZxDqVYG2jycoTh\"]},\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol\":{\"keccak256\":\"0x1aca747b823c4d8492ae379cfd9495e8ff19726302d943da56b2bb71aebecc73\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://716c755b41c76deb60297664878f07e0972867918fde13c20c196263d3daa554\",\"dweb:/ipfs/QmbrxvDYfcgSjBBnDdXyZJcwd8pYyyrQhYqY5h6DaxWKcy\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x9486045e189facd2e868ece35249872598ef03f1087fb6fa4d1161842daa2287\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77c3a04ef8453788b14b1ebbc24dd3f0a18ceb2615cd156aac949a611e552af8\",\"dweb:/ipfs/QmcmqWGguRM3iLuF57tcyrN3F6EA63kzeNkDfQuteBnurr\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca0c2396dbeb3503b51abf4248ebf77a1461edad513c01529df51850a012bee3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://991b44ff44e0496e8554a90f4c0512c28faed45104d40430019f3c67ea67740e\",\"dweb:/ipfs/Qmc3nRapVbcctELoZS5qe17zLkFB3bETBfwzCTMF1CSuGE\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a\",\"dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x8bbbc2f5c10065ee272592ae0a7a6ceb23de2fbd81564ee0bb015ecf404d5f61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b95e56c1640d0ef789fc5c16269e141e992f6c8ac97cc6d377bd3825e9cab182\",\"dweb:/ipfs/QmVzaxJZY51EhagrcNnkxoU6Uq17RhATe7aHvtkC6wUkgK\"]}},\"version\":1}", + "bytecode": "0x", + "deployedBytecode": "0x", + "immutableReferences": {}, + "sourceMap": "", + "deployedSourceMap": "", + "source": "// contracts/Wormhole.sol\n// SPDX-License-Identifier: Apache 2\n\npragma solidity ^0.6.0;\npragma experimental ABIEncoderV2;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\";\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\nimport \"./BytesLib.sol\";\nimport \"./WrappedAsset.sol\";\n\ncontract Wormhole is ReentrancyGuard {\n using SafeERC20 for IERC20;\n using BytesLib for bytes;\n using SafeMath for uint256;\n\n uint64 constant MAX_UINT64 = 18_446_744_073_709_551_615;\n\n // Address of the Wrapped asset template\n address public wrappedAssetMaster;\n\n // Chain ID of Ethereum\n uint8 CHAIN_ID = 2;\n\n // Address of the official WETH contract\n address constant WETHAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;\n\n struct GuardianSet {\n address[] keys;\n uint32 expiration_time;\n }\n\n event LogGuardianSetChanged(\n uint32 oldGuardianIndex,\n uint32 newGuardianIndex\n );\n\n event LogTokensLocked(\n uint8 target_chain,\n uint8 token_chain,\n uint8 token_decimals,\n bytes32 indexed token,\n bytes32 indexed sender,\n bytes32 recipient,\n uint256 amount,\n uint32 nonce\n );\n\n struct ParsedVAA {\n uint8 version;\n bytes32 hash;\n uint32 guardian_set_index;\n uint32 timestamp;\n uint8 action;\n bytes payload;\n }\n\n // Mapping of guardian_set_index => guardian set\n mapping(uint32 => GuardianSet) public guardian_sets;\n // Current active guardian set\n uint32 public guardian_set_index;\n\n // Period for which a guardian set stays active after it has been replaced\n uint32 public guardian_set_expirity;\n\n // Mapping of already consumedVAAs\n mapping(bytes32 => bool) public consumedVAAs;\n\n // Mapping of wrapped asset ERC20 contracts\n mapping(bytes32 => address) public wrappedAssets;\n mapping(address => bool) public isWrappedAsset;\n\n constructor(GuardianSet memory initial_guardian_set, address wrapped_asset_master, uint32 _guardian_set_expirity) public {\n guardian_sets[0] = initial_guardian_set;\n // Explicitly set for doc purposes\n guardian_set_index = 0;\n guardian_set_expirity = _guardian_set_expirity;\n\n wrappedAssetMaster = wrapped_asset_master;\n }\n\n function getGuardianSet(uint32 idx) view public returns (GuardianSet memory gs) {\n return guardian_sets[idx];\n }\n\n function submitVAA(\n bytes calldata vaa\n ) public nonReentrant {\n ParsedVAA memory parsed_vaa = parseAndVerifyVAA(vaa);\n // Process VAA\n if (parsed_vaa.action == 0x01) {\n require(parsed_vaa.guardian_set_index == guardian_set_index, \"only the current guardian set can change the guardian set\");\n vaaUpdateGuardianSet(parsed_vaa.payload);\n } else if (parsed_vaa.action == 0x10) {\n vaaTransfer(parsed_vaa.payload);\n } else {\n revert(\"invalid VAA action\");\n }\n\n // Set the VAA as consumed\n consumedVAAs[parsed_vaa.hash] = true;\n }\n\n // parseAndVerifyVAA parses raw VAA data into a struct and verifies whether it contains sufficient signatures of an\n // active guardian set i.e. is valid according to Wormhole consensus rules.\n function parseAndVerifyVAA(bytes calldata vaa) public view returns (ParsedVAA memory parsed_vaa) {\n parsed_vaa.version = vaa.toUint8(0);\n require(parsed_vaa.version == 1, \"VAA version incompatible\");\n\n // Load 4 bytes starting from index 1\n parsed_vaa.guardian_set_index = vaa.toUint32(1);\n\n uint256 len_signers = vaa.toUint8(5);\n uint offset = 6 + 66 * len_signers;\n\n // Load 4 bytes timestamp\n parsed_vaa.timestamp = vaa.toUint32(offset);\n\n // Hash the body\n parsed_vaa.hash = keccak256(vaa.slice(offset, vaa.length - offset));\n require(!consumedVAAs[parsed_vaa.hash], \"VAA was already executed\");\n\n GuardianSet memory guardian_set = guardian_sets[parsed_vaa.guardian_set_index];\n require(guardian_set.keys.length > 0, \"invalid guardian set\");\n require(guardian_set.expiration_time == 0 || guardian_set.expiration_time > block.timestamp, \"guardian set has expired\");\n // We're using a fixed point number transformation with 1 decimal to deal with rounding.\n require(((guardian_set.keys.length * 10 / 3) * 2) / 10 + 1 <= len_signers, \"no quorum\");\n\n int16 last_index = - 1;\n for (uint i = 0; i < len_signers; i++) {\n uint8 index = vaa.toUint8(6 + i * 66);\n require(index > last_index, \"signature indices must be ascending\");\n last_index = int16(index);\n\n bytes32 r = vaa.toBytes32(7 + i * 66);\n bytes32 s = vaa.toBytes32(39 + i * 66);\n uint8 v = vaa.toUint8(71 + i * 66);\n v += 27;\n require(ecrecover(parsed_vaa.hash, v, r, s) == guardian_set.keys[index], \"VAA signature invalid\");\n }\n\n parsed_vaa.action = vaa.toUint8(offset + 4);\n parsed_vaa.payload = vaa.slice(offset + 5, vaa.length - (offset + 5));\n }\n\n function vaaUpdateGuardianSet(bytes memory data) private {\n uint32 new_guardian_set_index = data.toUint32(0);\n require(new_guardian_set_index == guardian_set_index + 1, \"index must increase in steps of 1\");\n uint8 len = data.toUint8(4);\n\n address[] memory new_guardians = new address[](len);\n for (uint i = 0; i < len; i++) {\n address addr = data.toAddress(5 + i * 20);\n new_guardians[i] = addr;\n }\n\n uint32 old_guardian_set_index = guardian_set_index;\n guardian_set_index = new_guardian_set_index;\n\n GuardianSet memory new_guardian_set = GuardianSet(new_guardians, 0);\n guardian_sets[guardian_set_index] = new_guardian_set;\n guardian_sets[old_guardian_set_index].expiration_time = uint32(block.timestamp) + guardian_set_expirity;\n\n emit LogGuardianSetChanged(old_guardian_set_index, guardian_set_index);\n }\n\n function vaaTransfer(bytes memory data) private {\n //uint32 nonce = data.toUint64(0);\n uint8 source_chain = data.toUint8(4);\n\n uint8 target_chain = data.toUint8(5);\n //bytes32 source_address = data.toBytes32(6);\n //bytes32 target_address = data.toBytes32(38);\n address target_address = data.toAddress(38 + 12);\n\n uint8 token_chain = data.toUint8(70);\n //bytes32 token_address = data.toBytes32(71);\n uint256 amount = data.toUint256(104);\n\n require(source_chain != target_chain, \"same chain transfers are not supported\");\n require(target_chain == CHAIN_ID, \"transfer must be incoming\");\n\n if (token_chain != CHAIN_ID) {\n bytes32 token_address = data.toBytes32(71);\n bytes32 asset_id = keccak256(abi.encodePacked(token_chain, token_address));\n\n // if yes: mint to address\n // if no: create and mint\n address wrapped_asset = wrappedAssets[asset_id];\n if (wrapped_asset == address(0)) {\n uint8 asset_decimals = data.toUint8(103);\n wrapped_asset = deployWrappedAsset(asset_id, token_chain, token_address, asset_decimals);\n }\n\n WrappedAsset(wrapped_asset).mint(target_address, amount);\n } else {\n address token_address = data.toAddress(71 + 12);\n\n uint8 decimals = ERC20(token_address).decimals();\n\n // Readjust decimals if they've previously been truncated\n if (decimals > 9) {\n amount = amount.mul(10 ** uint256(decimals - 9));\n }\n IERC20(token_address).safeTransfer(target_address, amount);\n }\n }\n\n function deployWrappedAsset(bytes32 seed, uint8 token_chain, bytes32 token_address, uint8 decimals) private returns (address asset){\n // Taken from https://github.com/OpenZeppelin/openzeppelin-sdk/blob/master/packages/lib/contracts/upgradeability/ProxyFactory.sol\n // Licensed under MIT\n bytes20 targetBytes = bytes20(wrappedAssetMaster);\n assembly {\n let clone := mload(0x40)\n mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(clone, 0x14), targetBytes)\n mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n asset := create2(0, clone, 0x37, seed)\n }\n\n // Call initializer\n WrappedAsset(asset).initialize(token_chain, token_address, decimals);\n\n // Store address\n wrappedAssets[seed] = asset;\n isWrappedAsset[asset] = true;\n }\n\n function lockAssets(\n address asset,\n uint256 amount,\n bytes32 recipient,\n uint8 target_chain,\n uint32 nonce,\n bool refund_dust\n ) public nonReentrant {\n require(target_chain != CHAIN_ID, \"must not transfer to the same chain\");\n\n uint8 asset_chain = CHAIN_ID;\n bytes32 asset_address;\n uint8 decimals = ERC20(asset).decimals();\n\n if (isWrappedAsset[asset]) {\n WrappedAsset(asset).burn(msg.sender, amount);\n asset_chain = WrappedAsset(asset).assetChain();\n asset_address = WrappedAsset(asset).assetAddress();\n } else {\n uint256 balanceBefore = IERC20(asset).balanceOf(address(this));\n IERC20(asset).safeTransferFrom(msg.sender, address(this), amount);\n uint256 balanceAfter = IERC20(asset).balanceOf(address(this));\n\n // The amount that was transferred in is the delta between balance before and after the transfer.\n // This is to properly handle tokens that charge a fee on transfer.\n amount = balanceAfter.sub(balanceBefore);\n\n // Decimal adjust amount - we keep the dust\n if (decimals > 9) {\n uint256 original_amount = amount;\n amount = amount.div(10 ** uint256(decimals - 9));\n\n if (refund_dust) {\n IERC20(asset).safeTransfer(msg.sender, original_amount.mod(10 ** uint256(decimals - 9)));\n }\n\n decimals = 9;\n }\n\n require(balanceAfter.div(10 ** uint256(ERC20(asset).decimals() - 9)) <= MAX_UINT64, \"bridge balance would exceed maximum\");\n\n asset_address = bytes32(uint256(asset));\n }\n\n // Check here after truncation\n require(amount != 0, \"truncated amount must not be 0\");\n\n emit LogTokensLocked(target_chain, asset_chain, decimals, asset_address, bytes32(uint256(msg.sender)), recipient, amount, nonce);\n }\n\n function lockETH(\n bytes32 recipient,\n uint8 target_chain,\n uint32 nonce\n ) public payable nonReentrant {\n require(target_chain != CHAIN_ID, \"must not transfer to the same chain\");\n\n uint256 remainder = msg.value.mod(10 ** 9);\n uint256 transfer_amount = msg.value.div(10 ** 9);\n require(transfer_amount != 0, \"truncated amount must not be 0\");\n\n // Transfer back remainder\n msg.sender.transfer(remainder);\n\n // Wrap tx value in WETH\n WETH(WETHAddress).deposit{value : msg.value - remainder}();\n\n // Log deposit of WETH\n emit LogTokensLocked(target_chain, CHAIN_ID, 9, bytes32(uint256(WETHAddress)), bytes32(uint256(msg.sender)), recipient, transfer_amount, nonce);\n }\n\n fallback() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\n\n receive() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\n}\n\n\ninterface WETH is IERC20 {\n function deposit() external payable;\n\n function withdraw(uint256 amount) external;\n}\n", + "sourcePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/Wormhole.sol", + "ast": { + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/Wormhole.sol", + "exportedSymbols": { + "WETH": [1431], + "Wormhole": [1420] + }, + "id": 1432, + "license": "Apache 2", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 335, + "literals": ["solidity", "^", "0.6", ".0"], + "nodeType": "PragmaDirective", + "src": "64:23:1" + }, + { + "id": 336, + "literals": ["experimental", "ABIEncoderV2"], + "nodeType": "PragmaDirective", + "src": "88:33:1" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "id": 337, + "nodeType": "ImportDirective", + "scope": 1432, + "sourceUnit": 3009, + "src": "123:55:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 338, + "nodeType": "ImportDirective", + "scope": 1432, + "sourceUnit": 3087, + "src": "179:56:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", + "id": 339, + "nodeType": "ImportDirective", + "scope": 1432, + "sourceUnit": 3300, + "src": "236:59:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "file": "@openzeppelin/contracts/math/SafeMath.sol", + "id": 340, + "nodeType": "ImportDirective", + "scope": 1432, + "sourceUnit": 2506, + "src": "296:51:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "id": 341, + "nodeType": "ImportDirective", + "scope": 1432, + "sourceUnit": 3659, + "src": "348:59:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/BytesLib.sol", + "file": "./BytesLib.sol", + "id": 342, + "nodeType": "ImportDirective", + "scope": 1432, + "sourceUnit": 334, + "src": "408:24:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol", + "file": "./WrappedAsset.sol", + "id": 343, + "nodeType": "ImportDirective", + "scope": 1432, + "sourceUnit": 2148, + "src": "433:28:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 344, + "name": "ReentrancyGuard", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3658, + "src": "484:15:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReentrancyGuard_$3658", + "typeString": "contract ReentrancyGuard" + } + }, + "id": 345, + "nodeType": "InheritanceSpecifier", + "src": "484:15:1" + } + ], + "contractDependencies": [3658], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1420, + "linearizedBaseContracts": [1420, 3658], + "name": "Wormhole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 348, + "libraryName": { + "contractScope": null, + "id": 346, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3299, + "src": "512:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$3299", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "506:27:1", + "typeName": { + "contractScope": null, + "id": 347, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3086, + "src": "526:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + } + }, + { + "id": 351, + "libraryName": { + "contractScope": null, + "id": 349, + "name": "BytesLib", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 333, + "src": "544:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BytesLib_$333", + "typeString": "library BytesLib" + } + }, + "nodeType": "UsingForDirective", + "src": "538:25:1", + "typeName": { + "id": 350, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "557:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + { + "id": 354, + "libraryName": { + "contractScope": null, + "id": 352, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2505, + "src": "574:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2505", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "568:27:1", + "typeName": { + "id": 353, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "587:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": true, + "id": 357, + "mutability": "constant", + "name": "MAX_UINT64", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1420, + "src": "601:55:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 355, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "601:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "31385f3434365f3734345f3037335f3730395f3535315f363135", + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "630:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551615_by_1", + "typeString": "int_const 18446744073709551615" + }, + "value": "18_446_744_073_709_551_615" + }, + "visibility": "internal" + }, + { + "constant": false, + "functionSelector": "99da1d3c", + "id": 359, + "mutability": "mutable", + "name": "wrappedAssetMaster", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1420, + "src": "708:33:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 358, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "708:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 362, + "mutability": "mutable", + "name": "CHAIN_ID", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1420, + "src": "776:18:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 360, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "776:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "32", + "id": 361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "793:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 365, + "mutability": "constant", + "name": "WETHAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1420, + "src": "846:73:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 363, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "846:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "307843303261614133396232323346453844304130653543344632376541443930383343373536436332", + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "877:42:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "value": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + "visibility": "internal" + }, + { + "canonicalName": "Wormhole.GuardianSet", + "id": 371, + "members": [ + { + "constant": false, + "id": 368, + "mutability": "mutable", + "name": "keys", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 371, + "src": "955:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 366, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "955:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 367, + "length": null, + "nodeType": "ArrayTypeName", + "src": "955:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 370, + "mutability": "mutable", + "name": "expiration_time", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 371, + "src": "979:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 369, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "979:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "GuardianSet", + "nodeType": "StructDefinition", + "scope": 1420, + "src": "926:82:1", + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 377, + "name": "LogGuardianSetChanged", + "nodeType": "EventDefinition", + "parameters": { + "id": 376, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 373, + "indexed": false, + "mutability": "mutable", + "name": "oldGuardianIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 377, + "src": "1051:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 372, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1051:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 375, + "indexed": false, + "mutability": "mutable", + "name": "newGuardianIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 377, + "src": "1084:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 374, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1084:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1041:72:1" + }, + "src": "1014:100:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 395, + "name": "LogTokensLocked", + "nodeType": "EventDefinition", + "parameters": { + "id": 394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 379, + "indexed": false, + "mutability": "mutable", + "name": "target_chain", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 395, + "src": "1151:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 378, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1151:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 381, + "indexed": false, + "mutability": "mutable", + "name": "token_chain", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 395, + "src": "1179:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 380, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1179:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 383, + "indexed": false, + "mutability": "mutable", + "name": "token_decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 395, + "src": "1206:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 382, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1206:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 385, + "indexed": true, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 395, + "src": "1236:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 384, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1236:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 387, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 395, + "src": "1267:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 386, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1267:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 389, + "indexed": false, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 395, + "src": "1299:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 388, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1299:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 391, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 395, + "src": "1326:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1326:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 393, + "indexed": false, + "mutability": "mutable", + "name": "nonce", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 395, + "src": "1350:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 392, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1350:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1141:227:1" + }, + "src": "1120:249:1" + }, + { + "canonicalName": "Wormhole.ParsedVAA", + "id": 408, + "members": [ + { + "constant": false, + "id": 397, + "mutability": "mutable", + "name": "version", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 408, + "src": "1402:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 396, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1402:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 399, + "mutability": "mutable", + "name": "hash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 408, + "src": "1425:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 398, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1425:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 401, + "mutability": "mutable", + "name": "guardian_set_index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 408, + "src": "1447:25:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 400, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1447:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 403, + "mutability": "mutable", + "name": "timestamp", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 408, + "src": "1482:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 402, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1482:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 405, + "mutability": "mutable", + "name": "action", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 408, + "src": "1508:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 404, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1508:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 407, + "mutability": "mutable", + "name": "payload", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 408, + "src": "1530:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 406, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1530:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "ParsedVAA", + "nodeType": "StructDefinition", + "scope": 1420, + "src": "1375:175:1", + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "42b0aefa", + "id": 412, + "mutability": "mutable", + "name": "guardian_sets", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1420, + "src": "1609:51:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", + "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" + }, + "typeName": { + "id": 411, + "keyType": { + "id": 409, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1617:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Mapping", + "src": "1609:30:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", + "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" + }, + "valueType": { + "contractScope": null, + "id": 410, + "name": "GuardianSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 371, + "src": "1627:11:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", + "typeString": "struct Wormhole.GuardianSet" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "822d82b3", + "id": 414, + "mutability": "mutable", + "name": "guardian_set_index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1420, + "src": "1701:32:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 413, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1701:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "4db47840", + "id": 416, + "mutability": "mutable", + "name": "guardian_set_expirity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1420, + "src": "1819:35:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 415, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1819:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "a31fe409", + "id": 420, + "mutability": "mutable", + "name": "consumedVAAs", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1420, + "src": "1900:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 419, + "keyType": { + "id": 417, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1908:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1900:24:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 418, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1919:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "b6694c2a", + "id": 424, + "mutability": "mutable", + "name": "wrappedAssets", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1420, + "src": "1999:48:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + }, + "typeName": { + "id": 423, + "keyType": { + "id": 421, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2007:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1999:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + }, + "valueType": { + "id": 422, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2018:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "1a2be4da", + "id": 428, + "mutability": "mutable", + "name": "isWrappedAsset", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1420, + "src": "2053:46:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 427, + "keyType": { + "id": 425, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2061:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2053:24:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 426, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2072:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 455, + "nodeType": "Block", + "src": "2227:239:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 437, + "name": "guardian_sets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "2237:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", + "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" + } + }, + "id": 439, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2251:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2237:16:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage", + "typeString": "struct Wormhole.GuardianSet storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 440, + "name": "initial_guardian_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 430, + "src": "2256:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "src": "2237:39:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage", + "typeString": "struct Wormhole.GuardianSet storage ref" + } + }, + "id": 442, + "nodeType": "ExpressionStatement", + "src": "2237:39:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 443, + "name": "guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "2329:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2350:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2329:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 446, + "nodeType": "ExpressionStatement", + "src": "2329:22:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 447, + "name": "guardian_set_expirity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "2361:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 448, + "name": "_guardian_set_expirity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 434, + "src": "2385:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "2361:46:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 450, + "nodeType": "ExpressionStatement", + "src": "2361:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 451, + "name": "wrappedAssetMaster", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 359, + "src": "2418:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 452, + "name": "wrapped_asset_master", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 432, + "src": "2439:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2418:41:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 454, + "nodeType": "ExpressionStatement", + "src": "2418:41:1" + } + ] + }, + "documentation": null, + "id": 456, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 435, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 430, + "mutability": "mutable", + "name": "initial_guardian_set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 456, + "src": "2118:39:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet" + }, + "typeName": { + "contractScope": null, + "id": 429, + "name": "GuardianSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 371, + "src": "2118:11:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", + "typeString": "struct Wormhole.GuardianSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 432, + "mutability": "mutable", + "name": "wrapped_asset_master", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 456, + "src": "2159:28:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 431, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2159:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 434, + "mutability": "mutable", + "name": "_guardian_set_expirity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 456, + "src": "2189:29:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 433, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2189:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2117:102:1" + }, + "returnParameters": { + "id": 436, + "nodeType": "ParameterList", + "parameters": [], + "src": "2227:0:1" + }, + "scope": 1420, + "src": "2106:360:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 467, + "nodeType": "Block", + "src": "2552:42:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 463, + "name": "guardian_sets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "2569:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", + "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" + } + }, + "id": 465, + "indexExpression": { + "argumentTypes": null, + "id": 464, + "name": "idx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "2583:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2569:18:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage", + "typeString": "struct Wormhole.GuardianSet storage ref" + } + }, + "functionReturnParameters": 462, + "id": 466, + "nodeType": "Return", + "src": "2562:25:1" + } + ] + }, + "documentation": null, + "functionSelector": "f951975a", + "id": 468, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getGuardianSet", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 459, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 458, + "mutability": "mutable", + "name": "idx", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 468, + "src": "2496:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 457, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2496:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2495:12:1" + }, + "returnParameters": { + "id": 462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 461, + "mutability": "mutable", + "name": "gs", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 468, + "src": "2529:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet" + }, + "typeName": { + "contractScope": null, + "id": 460, + "name": "GuardianSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 371, + "src": "2529:11:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", + "typeString": "struct Wormhole.GuardianSet" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2528:23:1" + }, + "scope": 1420, + "src": "2472:122:1", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 523, + "nodeType": "Block", + "src": "2673:566:1", + "statements": [ + { + "assignments": [476], + "declarations": [ + { + "constant": false, + "id": 476, + "mutability": "mutable", + "name": "parsed_vaa", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 523, + "src": "2683:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA" + }, + "typeName": { + "contractScope": null, + "id": 475, + "name": "ParsedVAA", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 408, + "src": "2683:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_storage_ptr", + "typeString": "struct Wormhole.ParsedVAA" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 480, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 478, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 470, + "src": "2731:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 477, + "name": "parseAndVerifyVAA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 781, + "src": "2713:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_ParsedVAA_$408_memory_ptr_$", + "typeString": "function (bytes calldata) view returns (struct Wormhole.ParsedVAA memory)" + } + }, + "id": 479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2713:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2683:52:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 481, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "2772:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 482, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "action", + "nodeType": "MemberAccess", + "referencedDeclaration": 405, + "src": "2772:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30783031", + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2793:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "0x01" + }, + "src": "2772:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 499, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "3009:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 500, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "action", + "nodeType": "MemberAccess", + "referencedDeclaration": 405, + "src": "3009:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30783130", + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3030:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "0x10" + }, + "src": "3009:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 513, + "nodeType": "Block", + "src": "3098:53:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "696e76616c69642056414120616374696f6e", + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3119:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", + "typeString": "literal_string \"invalid VAA action\"" + }, + "value": "invalid VAA action" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", + "typeString": "literal_string \"invalid VAA action\"" + } + ], + "id": 509, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [-19, -19], + "referencedDeclaration": -19, + "src": "3112:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3112:28:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 512, + "nodeType": "ExpressionStatement", + "src": "3112:28:1" + } + ] + }, + "id": 514, + "nodeType": "IfStatement", + "src": "3005:146:1", + "trueBody": { + "id": 508, + "nodeType": "Block", + "src": "3036:56:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 504, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "3062:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 505, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 407, + "src": "3062:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 503, + "name": "vaaTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1051, + "src": "3050:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory)" + } + }, + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3050:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 507, + "nodeType": "ExpressionStatement", + "src": "3050:31:1" + } + ] + } + }, + "id": 515, + "nodeType": "IfStatement", + "src": "2768:383:1", + "trueBody": { + "id": 498, + "nodeType": "Block", + "src": "2799:200:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 486, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "2821:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 487, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "guardian_set_index", + "nodeType": "MemberAccess", + "referencedDeclaration": 401, + "src": "2821:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 488, + "name": "guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "2854:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "2821:51:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f6e6c79207468652063757272656e7420677561726469616e207365742063616e206368616e67652074686520677561726469616e20736574", + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2874:59:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", + "typeString": "literal_string \"only the current guardian set can change the guardian set\"" + }, + "value": "only the current guardian set can change the guardian set" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", + "typeString": "literal_string \"only the current guardian set can change the guardian set\"" + } + ], + "id": 485, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "2813:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2813:121:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 492, + "nodeType": "ExpressionStatement", + "src": "2813:121:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 494, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "2969:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 495, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 407, + "src": "2969:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 493, + "name": "vaaUpdateGuardianSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 889, + "src": "2948:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory)" + } + }, + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2948:40:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 497, + "nodeType": "ExpressionStatement", + "src": "2948:40:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 516, + "name": "consumedVAAs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "3196:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 519, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 517, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "3209:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 518, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 399, + "src": "3209:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3196:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3228:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3196:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 522, + "nodeType": "ExpressionStatement", + "src": "3196:36:1" + } + ] + }, + "documentation": null, + "functionSelector": "3bc0aee6", + "id": 524, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 473, + "modifierName": { + "argumentTypes": null, + "id": 472, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3657, + "src": "2660:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2660:12:1" + } + ], + "name": "submitVAA", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 471, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 470, + "mutability": "mutable", + "name": "vaa", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 524, + "src": "2628:18:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 469, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2628:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2618:34:1" + }, + "returnParameters": { + "id": 474, + "nodeType": "ParameterList", + "parameters": [], + "src": "2673:0:1" + }, + "scope": 1420, + "src": "2600:639:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 780, + "nodeType": "Block", + "src": "3542:1748:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 531, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "3552:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 533, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "version", + "nodeType": "MemberAccess", + "referencedDeclaration": 397, + "src": "3552:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3585:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 534, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "3573:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "3573:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3573:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3552:35:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 539, + "nodeType": "ExpressionStatement", + "src": "3552:35:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 541, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "3605:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 542, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "version", + "nodeType": "MemberAccess", + "referencedDeclaration": 397, + "src": "3605:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 543, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3627:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3605:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5641412076657273696f6e20696e636f6d70617469626c65", + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3630:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", + "typeString": "literal_string \"VAA version incompatible\"" + }, + "value": "VAA version incompatible" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", + "typeString": "literal_string \"VAA version incompatible\"" + } + ], + "id": 540, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "3597:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3597:60:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 547, + "nodeType": "ExpressionStatement", + "src": "3597:60:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 548, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "3714:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 550, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "guardian_set_index", + "nodeType": "MemberAccess", + "referencedDeclaration": 401, + "src": "3714:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3759:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "id": 551, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "3746:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint32", + "nodeType": "MemberAccess", + "referencedDeclaration": 163, + "src": "3746:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint32)" + } + }, + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3746:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "3714:47:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 556, + "nodeType": "ExpressionStatement", + "src": "3714:47:1" + }, + { + "assignments": [558], + "declarations": [ + { + "constant": false, + "id": 558, + "mutability": "mutable", + "name": "len_signers", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 780, + "src": "3772:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 557, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3772:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 563, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "35", + "id": 561, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3806:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + } + ], + "expression": { + "argumentTypes": null, + "id": 559, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "3794:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "3794:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3794:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3772:36:1" + }, + { + "assignments": [565], + "declarations": [ + { + "constant": false, + "id": 565, + "mutability": "mutable", + "name": "offset", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 780, + "src": "3818:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 564, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3818:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 571, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "36", + "id": 566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3832:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_6_by_1", + "typeString": "int_const 6" + }, + "value": "6" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3636", + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3836:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_66_by_1", + "typeString": "int_const 66" + }, + "value": "66" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 568, + "name": "len_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "3841:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3836:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3832:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3818:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 572, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "3897:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 403, + "src": "3897:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 577, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "3933:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 575, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "3920:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint32", + "nodeType": "MemberAccess", + "referencedDeclaration": 163, + "src": "3920:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint32)" + } + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3920:20:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "3897:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 580, + "nodeType": "ExpressionStatement", + "src": "3897:43:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 581, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "3976:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 583, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 399, + "src": "3976:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 587, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "4014:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 588, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "4022:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4022:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 590, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "4035:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4022:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 585, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "4004:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "slice", + "nodeType": "MemberAccess", + "referencedDeclaration": 55, + "src": "4004:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + } + }, + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4004:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 584, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3994:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3994:49:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3976:67:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 595, + "nodeType": "ExpressionStatement", + "src": "3976:67:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4061:30:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 597, + "name": "consumedVAAs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "4062:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 600, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 598, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "4075:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 599, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 399, + "src": "4075:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4062:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5641412077617320616c7265616479206578656375746564", + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4093:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", + "typeString": "literal_string \"VAA was already executed\"" + }, + "value": "VAA was already executed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", + "typeString": "literal_string \"VAA was already executed\"" + } + ], + "id": 596, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4053:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4053:67:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 604, + "nodeType": "ExpressionStatement", + "src": "4053:67:1" + }, + { + "assignments": [606], + "declarations": [ + { + "constant": false, + "id": 606, + "mutability": "mutable", + "name": "guardian_set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 780, + "src": "4131:31:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet" + }, + "typeName": { + "contractScope": null, + "id": 605, + "name": "GuardianSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 371, + "src": "4131:11:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", + "typeString": "struct Wormhole.GuardianSet" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 611, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 607, + "name": "guardian_sets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4165:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", + "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" + } + }, + "id": 610, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 608, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "4179:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 609, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "guardian_set_index", + "nodeType": "MemberAccess", + "referencedDeclaration": 401, + "src": "4179:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4165:44:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage", + "typeString": "struct Wormhole.GuardianSet storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4131:78:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 613, + "name": "guardian_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "4227:12:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "id": 614, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 368, + "src": "4227:17:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4227:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4254:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4227:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "696e76616c696420677561726469616e20736574", + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4257:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ef4d0f2354b2279f26c4ba4477a0c338dcdd31fbb9caa6ef52ec7856b55556f3", + "typeString": "literal_string \"invalid guardian set\"" + }, + "value": "invalid guardian set" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ef4d0f2354b2279f26c4ba4477a0c338dcdd31fbb9caa6ef52ec7856b55556f3", + "typeString": "literal_string \"invalid guardian set\"" + } + ], + "id": 612, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4219:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4219:61:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 620, + "nodeType": "ExpressionStatement", + "src": "4219:61:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 622, + "name": "guardian_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "4298:12:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "id": 623, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiration_time", + "nodeType": "MemberAccess", + "referencedDeclaration": 370, + "src": "4298:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4330:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4298:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 626, + "name": "guardian_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "4335:12:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "id": 627, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiration_time", + "nodeType": "MemberAccess", + "referencedDeclaration": 370, + "src": "4335:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 628, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "4366:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4366:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4335:46:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4298:83:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "677561726469616e20736574206861732065787069726564", + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4383:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", + "typeString": "literal_string \"guardian set has expired\"" + }, + "value": "guardian set has expired" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", + "typeString": "literal_string \"guardian set has expired\"" + } + ], + "id": 621, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4290:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4290:120:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 634, + "nodeType": "ExpressionStatement", + "src": "4290:120:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 636, + "name": "guardian_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "4527:12:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "id": 637, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 368, + "src": "4527:17:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4527:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4554:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "4527:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4559:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "4527:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 643, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4526:35:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4564:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "4526:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 646, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4525:41:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4569:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "4525:46:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4574:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4525:50:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 651, + "name": "len_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "4579:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4525:65:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6e6f2071756f72756d", + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4592:11:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", + "typeString": "literal_string \"no quorum\"" + }, + "value": "no quorum" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", + "typeString": "literal_string \"no quorum\"" + } + ], + "id": 635, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4517:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4517:87:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 655, + "nodeType": "ExpressionStatement", + "src": "4517:87:1" + }, + { + "assignments": [657], + "declarations": [ + { + "constant": false, + "id": 657, + "mutability": "mutable", + "name": "last_index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 780, + "src": "4615:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + }, + "typeName": { + "id": 656, + "name": "int16", + "nodeType": "ElementaryTypeName", + "src": "4615:5:1", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 660, + "initialValue": { + "argumentTypes": null, + "id": 659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "4634:3:1", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4636:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4615:22:1" + }, + { + "body": { + "id": 749, + "nodeType": "Block", + "src": "4686:465:1", + "statements": [ + { + "assignments": [672], + "declarations": [ + { + "constant": false, + "id": 672, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 749, + "src": "4700:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 671, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4700:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 681, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "36", + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4726:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_6_by_1", + "typeString": "int_const 6" + }, + "value": "6" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 676, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "4730:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3636", + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4734:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_66_by_1", + "typeString": "int_const 66" + }, + "value": "66" + }, + "src": "4730:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4726:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 673, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "4714:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "4714:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4714:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4700:37:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int16", + "typeString": "int16" + }, + "id": 685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 683, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "4759:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 684, + "name": "last_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 657, + "src": "4767:10:1", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "src": "4759:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7369676e617475726520696e6469636573206d75737420626520617363656e64696e67", + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4779:37:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_de9ff8e5647eeed7691d313f96ed0065761ad2da429d76b3b7868b564890def8", + "typeString": "literal_string \"signature indices must be ascending\"" + }, + "value": "signature indices must be ascending" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_de9ff8e5647eeed7691d313f96ed0065761ad2da429d76b3b7868b564890def8", + "typeString": "literal_string \"signature indices must be ascending\"" + } + ], + "id": 682, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4751:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4751:66:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 688, + "nodeType": "ExpressionStatement", + "src": "4751:66:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 689, + "name": "last_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 657, + "src": "4831:10:1", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 692, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "4850:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4844:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int16_$", + "typeString": "type(int16)" + }, + "typeName": { + "id": 690, + "name": "int16", + "nodeType": "ElementaryTypeName", + "src": "4844:5:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4844:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "src": "4831:25:1", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "id": 695, + "nodeType": "ExpressionStatement", + "src": "4831:25:1" + }, + { + "assignments": [697], + "declarations": [ + { + "constant": false, + "id": 697, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 749, + "src": "4871:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 696, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4871:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 706, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "37", + "id": 700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4897:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_7_by_1", + "typeString": "int_const 7" + }, + "value": "7" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 701, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "4901:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3636", + "id": 702, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4905:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_66_by_1", + "typeString": "int_const 66" + }, + "value": "66" + }, + "src": "4901:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4897:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 698, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "4883:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toBytes32", + "nodeType": "MemberAccess", + "referencedDeclaration": 298, + "src": "4883:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (bytes32)" + } + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4883:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4871:37:1" + }, + { + "assignments": [708], + "declarations": [ + { + "constant": false, + "id": 708, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 749, + "src": "4922:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 707, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4922:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 717, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3339", + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4948:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_39_by_1", + "typeString": "int_const 39" + }, + "value": "39" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 712, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "4953:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3636", + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4957:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_66_by_1", + "typeString": "int_const 66" + }, + "value": "66" + }, + "src": "4953:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4948:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 709, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "4934:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toBytes32", + "nodeType": "MemberAccess", + "referencedDeclaration": 298, + "src": "4934:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (bytes32)" + } + }, + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4934:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4922:38:1" + }, + { + "assignments": [719], + "declarations": [ + { + "constant": false, + "id": 719, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 749, + "src": "4974:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 718, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4974:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 728, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3731", + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4996:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_71_by_1", + "typeString": "int_const 71" + }, + "value": "71" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 723, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "5001:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3636", + "id": 724, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5005:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_66_by_1", + "typeString": "int_const 66" + }, + "value": "66" + }, + "src": "5001:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4996:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 720, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "4984:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "4984:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4984:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4974:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 729, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "5022:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3237", + "id": 730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5027:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "5022:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 732, + "nodeType": "ExpressionStatement", + "src": "5022:7:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 735, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "5061:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 736, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 399, + "src": "5061:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 737, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "5078:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 738, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 697, + "src": "5081:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 739, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "5084:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 734, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "5051:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5051:35:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 741, + "name": "guardian_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "5090:12:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "id": 742, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 368, + "src": "5090:17:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 744, + "indexExpression": { + "argumentTypes": null, + "id": 743, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "5108:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5090:24:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5051:63:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "564141207369676e617475726520696e76616c6964", + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5116:23:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", + "typeString": "literal_string \"VAA signature invalid\"" + }, + "value": "VAA signature invalid" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", + "typeString": "literal_string \"VAA signature invalid\"" + } + ], + "id": 733, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "5043:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5043:97:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 748, + "nodeType": "ExpressionStatement", + "src": "5043:97:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 665, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "4664:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 666, + "name": "len_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "4668:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4664:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 750, + "initializationExpression": { + "assignments": [662], + "declarations": [ + { + "constant": false, + "id": 662, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 750, + "src": "4652:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 661, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4652:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 664, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4661:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4652:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4681:3:1", + "subExpression": { + "argumentTypes": null, + "id": 668, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "4681:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 670, + "nodeType": "ExpressionStatement", + "src": "4681:3:1" + }, + "nodeType": "ForStatement", + "src": "4647:504:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 751, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "5161:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 753, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "action", + "nodeType": "MemberAccess", + "referencedDeclaration": 405, + "src": "5161:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 756, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "5193:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5202:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "5193:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 754, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "5181:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "5181:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5181:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "5161:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 761, + "nodeType": "ExpressionStatement", + "src": "5161:43:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 762, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "5214:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 764, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 407, + "src": "5214:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 767, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "5245:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 768, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5254:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "5245:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 770, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "5257:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5257:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 772, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "5271:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5280:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "5271:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 775, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5270:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5257:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 765, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "5235:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "slice", + "nodeType": "MemberAccess", + "referencedDeclaration": 55, + "src": "5235:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + } + }, + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5235:48:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "5214:69:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 779, + "nodeType": "ExpressionStatement", + "src": "5214:69:1" + } + ] + }, + "documentation": null, + "functionSelector": "600b9aa6", + "id": 781, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "parseAndVerifyVAA", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 527, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 526, + "mutability": "mutable", + "name": "vaa", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 781, + "src": "3472:18:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 525, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3472:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3471:20:1" + }, + "returnParameters": { + "id": 530, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 529, + "mutability": "mutable", + "name": "parsed_vaa", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 781, + "src": "3513:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA" + }, + "typeName": { + "contractScope": null, + "id": 528, + "name": "ParsedVAA", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 408, + "src": "3513:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_storage_ptr", + "typeString": "struct Wormhole.ParsedVAA" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3512:29:1" + }, + "scope": 1420, + "src": "3445:1845:1", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 888, + "nodeType": "Block", + "src": "5353:859:1", + "statements": [ + { + "assignments": [787], + "declarations": [ + { + "constant": false, + "id": 787, + "mutability": "mutable", + "name": "new_guardian_set_index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 888, + "src": "5363:29:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 786, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "5363:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 792, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 790, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5409:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 788, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 783, + "src": "5395:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint32", + "nodeType": "MemberAccess", + "referencedDeclaration": 163, + "src": "5395:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint32)" + } + }, + "id": 791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5395:16:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5363:48:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 794, + "name": "new_guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "5429:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 795, + "name": "guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "5455:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 796, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5476:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5455:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "5429:48:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "696e646578206d75737420696e63726561736520696e207374657073206f662031", + "id": 799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5479:35:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9c35350c4790f34190b54478b12348e0cbd9c4c717b5d4a6ca5709d71c4f33d", + "typeString": "literal_string \"index must increase in steps of 1\"" + }, + "value": "index must increase in steps of 1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a9c35350c4790f34190b54478b12348e0cbd9c4c717b5d4a6ca5709d71c4f33d", + "typeString": "literal_string \"index must increase in steps of 1\"" + } + ], + "id": 793, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "5421:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5421:94:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 801, + "nodeType": "ExpressionStatement", + "src": "5421:94:1" + }, + { + "assignments": [803], + "declarations": [ + { + "constant": false, + "id": 803, + "mutability": "mutable", + "name": "len", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 888, + "src": "5525:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 802, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5525:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 808, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "34", + "id": 806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5550:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + ], + "expression": { + "argumentTypes": null, + "id": 804, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 783, + "src": "5537:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "5537:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5537:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5525:27:1" + }, + { + "assignments": [813], + "declarations": [ + { + "constant": false, + "id": 813, + "mutability": "mutable", + "name": "new_guardians", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 888, + "src": "5563:30:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 811, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5563:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 812, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5563:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 819, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 817, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "5610:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "5596:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5600:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 815, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5600:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5596:18:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5563:51:1" + }, + { + "body": { + "id": 847, + "nodeType": "Block", + "src": "5655:103:1", + "statements": [ + { + "assignments": [831], + "declarations": [ + { + "constant": false, + "id": 831, + "mutability": "mutable", + "name": "addr", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 847, + "src": "5669:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 830, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5669:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 840, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5699:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 835, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "5703:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3230", + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5707:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "src": "5703:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5699:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 832, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 783, + "src": "5684:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 82, + "src": "5684:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (address)" + } + }, + "id": 839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5684:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5669:41:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 841, + "name": "new_guardians", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 813, + "src": "5724:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 843, + "indexExpression": { + "argumentTypes": null, + "id": 842, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "5738:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5724:16:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 844, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "5743:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5724:23:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 846, + "nodeType": "ExpressionStatement", + "src": "5724:23:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 824, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "5641:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 825, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "5645:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "5641:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 848, + "initializationExpression": { + "assignments": [821], + "declarations": [ + { + "constant": false, + "id": 821, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 848, + "src": "5629:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 820, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5629:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 823, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5638:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5629:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5650:3:1", + "subExpression": { + "argumentTypes": null, + "id": 827, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "5650:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 829, + "nodeType": "ExpressionStatement", + "src": "5650:3:1" + }, + "nodeType": "ForStatement", + "src": "5624:134:1" + }, + { + "assignments": [850], + "declarations": [ + { + "constant": false, + "id": 850, + "mutability": "mutable", + "name": "old_guardian_set_index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 888, + "src": "5768:29:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 849, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "5768:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 852, + "initialValue": { + "argumentTypes": null, + "id": 851, + "name": "guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "5800:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5768:50:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 853, + "name": "guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "5828:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 854, + "name": "new_guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "5849:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "5828:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 856, + "nodeType": "ExpressionStatement", + "src": "5828:43:1" + }, + { + "assignments": [858], + "declarations": [ + { + "constant": false, + "id": 858, + "mutability": "mutable", + "name": "new_guardian_set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 888, + "src": "5882:35:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet" + }, + "typeName": { + "contractScope": null, + "id": 857, + "name": "GuardianSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 371, + "src": "5882:11:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", + "typeString": "struct Wormhole.GuardianSet" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 863, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 860, + "name": "new_guardians", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 813, + "src": "5932:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5947:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 859, + "name": "GuardianSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "5920:11:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_GuardianSet_$371_storage_ptr_$", + "typeString": "type(struct Wormhole.GuardianSet storage pointer)" + } + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5920:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5882:67:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 864, + "name": "guardian_sets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "5959:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", + "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" + } + }, + "id": 866, + "indexExpression": { + "argumentTypes": null, + "id": 865, + "name": "guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "5973:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5959:33:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage", + "typeString": "struct Wormhole.GuardianSet storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 867, + "name": "new_guardian_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 858, + "src": "5995:16:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "src": "5959:52:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage", + "typeString": "struct Wormhole.GuardianSet storage ref" + } + }, + "id": 869, + "nodeType": "ExpressionStatement", + "src": "5959:52:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 870, + "name": "guardian_sets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "6021:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", + "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" + } + }, + "id": 872, + "indexExpression": { + "argumentTypes": null, + "id": 871, + "name": "old_guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 850, + "src": "6035:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6021:37:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage", + "typeString": "struct Wormhole.GuardianSet storage ref" + } + }, + "id": 873, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiration_time", + "nodeType": "MemberAccess", + "referencedDeclaration": 370, + "src": "6021:53:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 876, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "6084:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6084:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6077:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 874, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "6077:6:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6077:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 879, + "name": "guardian_set_expirity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "6103:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "6077:47:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "6021:103:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 882, + "nodeType": "ExpressionStatement", + "src": "6021:103:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 884, + "name": "old_guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 850, + "src": "6162:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "argumentTypes": null, + "id": 885, + "name": "guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "6186:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 883, + "name": "LogGuardianSetChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "6140:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint32_$returns$__$", + "typeString": "function (uint32,uint32)" + } + }, + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6140:65:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 887, + "nodeType": "EmitStatement", + "src": "6135:70:1" + } + ] + }, + "documentation": null, + "id": 889, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "vaaUpdateGuardianSet", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 784, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 783, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 889, + "src": "5326:17:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 782, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5326:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5325:19:1" + }, + "returnParameters": { + "id": 785, + "nodeType": "ParameterList", + "parameters": [], + "src": "5353:0:1" + }, + "scope": 1420, + "src": "5296:916:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1050, + "nodeType": "Block", + "src": "6266:1644:1", + "statements": [ + { + "assignments": [895], + "declarations": [ + { + "constant": false, + "id": 895, + "mutability": "mutable", + "name": "source_chain", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1050, + "src": "6319:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 894, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6319:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 900, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "34", + "id": 898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6353:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + ], + "expression": { + "argumentTypes": null, + "id": 896, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "6340:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "6340:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6340:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6319:36:1" + }, + { + "assignments": [902], + "declarations": [ + { + "constant": false, + "id": 902, + "mutability": "mutable", + "name": "target_chain", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1050, + "src": "6366:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 901, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6366:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 907, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "35", + "id": 905, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6400:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + } + ], + "expression": { + "argumentTypes": null, + "id": 903, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "6387:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "6387:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6387:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6366:36:1" + }, + { + "assignments": [909], + "declarations": [ + { + "constant": false, + "id": 909, + "mutability": "mutable", + "name": "target_address", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1050, + "src": "6521:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 908, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6521:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 916, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_50_by_1", + "typeString": "int_const 50" + }, + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3338", + "id": 912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6561:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_38_by_1", + "typeString": "int_const 38" + }, + "value": "38" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3132", + "id": 913, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6566:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_12_by_1", + "typeString": "int_const 12" + }, + "value": "12" + }, + "src": "6561:7:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_50_by_1", + "typeString": "int_const 50" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_50_by_1", + "typeString": "int_const 50" + } + ], + "expression": { + "argumentTypes": null, + "id": 910, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "6546:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 82, + "src": "6546:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (address)" + } + }, + "id": 915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6546:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6521:48:1" + }, + { + "assignments": [918], + "declarations": [ + { + "constant": false, + "id": 918, + "mutability": "mutable", + "name": "token_chain", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1050, + "src": "6580:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 917, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6580:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 923, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "3730", + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6613:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_70_by_1", + "typeString": "int_const 70" + }, + "value": "70" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_70_by_1", + "typeString": "int_const 70" + } + ], + "expression": { + "argumentTypes": null, + "id": 919, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "6600:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "6600:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6600:16:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6580:36:1" + }, + { + "assignments": [925], + "declarations": [ + { + "constant": false, + "id": 925, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1050, + "src": "6680:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6680:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 930, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "313034", + "id": 928, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6712:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_104_by_1", + "typeString": "int_const 104" + }, + "value": "104" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_104_by_1", + "typeString": "int_const 104" + } + ], + "expression": { + "argumentTypes": null, + "id": 926, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "6697:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint256", + "nodeType": "MemberAccess", + "referencedDeclaration": 271, + "src": "6697:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint256)" + } + }, + "id": 929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6697:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6680:36:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 932, + "name": "source_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 895, + "src": "6735:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 933, + "name": "target_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 902, + "src": "6751:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "6735:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "73616d6520636861696e207472616e736665727320617265206e6f7420737570706f72746564", + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6765:40:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", + "typeString": "literal_string \"same chain transfers are not supported\"" + }, + "value": "same chain transfers are not supported" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", + "typeString": "literal_string \"same chain transfers are not supported\"" + } + ], + "id": 931, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "6727:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6727:79:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 937, + "nodeType": "ExpressionStatement", + "src": "6727:79:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 939, + "name": "target_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 902, + "src": "6824:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 940, + "name": "CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6840:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "6824:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e73666572206d75737420626520696e636f6d696e67", + "id": 942, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6850:27:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", + "typeString": "literal_string \"transfer must be incoming\"" + }, + "value": "transfer must be incoming" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", + "typeString": "literal_string \"transfer must be incoming\"" + } + ], + "id": 938, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "6816:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6816:62:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 944, + "nodeType": "ExpressionStatement", + "src": "6816:62:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 945, + "name": "token_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "6893:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 946, + "name": "CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6908:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "6893:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1048, + "nodeType": "Block", + "src": "7514:390:1", + "statements": [ + { + "assignments": [1005], + "declarations": [ + { + "constant": false, + "id": 1005, + "mutability": "mutable", + "name": "token_address", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1048, + "src": "7528:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7528:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1012, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_83_by_1", + "typeString": "int_const 83" + }, + "id": 1010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3731", + "id": 1008, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7567:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_71_by_1", + "typeString": "int_const 71" + }, + "value": "71" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3132", + "id": 1009, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7572:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_12_by_1", + "typeString": "int_const 12" + }, + "value": "12" + }, + "src": "7567:7:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_83_by_1", + "typeString": "int_const 83" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_83_by_1", + "typeString": "int_const 83" + } + ], + "expression": { + "argumentTypes": null, + "id": 1006, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "7552:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 82, + "src": "7552:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (address)" + } + }, + "id": 1011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7552:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7528:47:1" + }, + { + "assignments": [1014], + "declarations": [ + { + "constant": false, + "id": 1014, + "mutability": "mutable", + "name": "decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1048, + "src": "7590:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1013, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7590:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1020, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1016, + "name": "token_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1005, + "src": "7613:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1015, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3008, + "src": "7607:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$3008_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 1017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7607:20:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$3008", + "typeString": "contract ERC20" + } + }, + "id": 1018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "decimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 2584, + "src": "7607:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 1019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7607:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7590:48:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1021, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "7727:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "39", + "id": 1022, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7738:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "7727:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1039, + "nodeType": "IfStatement", + "src": "7723:99:1", + "trueBody": { + "id": 1038, + "nodeType": "Block", + "src": "7741:81:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1024, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 925, + "src": "7759:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7779:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1030, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "7793:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "39", + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7804:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "7793:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7785:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1028, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7785:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7785:21:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7779:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1025, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 925, + "src": "7768:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 2388, + "src": "7768:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7768:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7759:48:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1037, + "nodeType": "ExpressionStatement", + "src": "7759:48:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1044, + "name": "target_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 909, + "src": "7870:14:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1045, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 925, + "src": "7886:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1041, + "name": "token_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1005, + "src": "7842:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1040, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "7835:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$3086_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7835:21:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 1043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 3120, + "src": "7835:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3086_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$3086_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 1046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7835:58:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1047, + "nodeType": "ExpressionStatement", + "src": "7835:58:1" + } + ] + }, + "id": 1049, + "nodeType": "IfStatement", + "src": "6889:1015:1", + "trueBody": { + "id": 1003, + "nodeType": "Block", + "src": "6918:590:1", + "statements": [ + { + "assignments": [949], + "declarations": [ + { + "constant": false, + "id": 949, + "mutability": "mutable", + "name": "token_address", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1003, + "src": "6932:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 948, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6932:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 954, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "3731", + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6971:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_71_by_1", + "typeString": "int_const 71" + }, + "value": "71" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_71_by_1", + "typeString": "int_const 71" + } + ], + "expression": { + "argumentTypes": null, + "id": 950, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "6956:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toBytes32", + "nodeType": "MemberAccess", + "referencedDeclaration": 298, + "src": "6956:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (bytes32)" + } + }, + "id": 953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6956:18:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6932:42:1" + }, + { + "assignments": [956], + "declarations": [ + { + "constant": false, + "id": 956, + "mutability": "mutable", + "name": "asset_id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1003, + "src": "6988:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 955, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6988:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 964, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 960, + "name": "token_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "7034:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 961, + "name": "token_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "7047:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 958, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "7017:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 959, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7017:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7017:44:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 957, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7007:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7007:55:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6988:74:1" + }, + { + "assignments": [966], + "declarations": [ + { + "constant": false, + "id": 966, + "mutability": "mutable", + "name": "wrapped_asset", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1003, + "src": "7154:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 965, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7154:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 970, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 967, + "name": "wrappedAssets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "7178:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 969, + "indexExpression": { + "argumentTypes": null, + "id": 968, + "name": "asset_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "7192:8:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7178:23:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7154:47:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 971, + "name": "wrapped_asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 966, + "src": "7219:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7244:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 973, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7236:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 972, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7236:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7236:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "7219:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 994, + "nodeType": "IfStatement", + "src": "7215:212:1", + "trueBody": { + "id": 993, + "nodeType": "Block", + "src": "7248:179:1", + "statements": [ + { + "assignments": [978], + "declarations": [ + { + "constant": false, + "id": 978, + "mutability": "mutable", + "name": "asset_decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 993, + "src": "7266:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 977, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7266:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 983, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "313033", + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7302:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_103_by_1", + "typeString": "int_const 103" + }, + "value": "103" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_103_by_1", + "typeString": "int_const 103" + } + ], + "expression": { + "argumentTypes": null, + "id": 979, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "7289:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "7289:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7289:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7266:40:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 984, + "name": "wrapped_asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 966, + "src": "7324:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 986, + "name": "asset_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "7359:8:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 987, + "name": "token_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "7369:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 988, + "name": "token_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "7382:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 989, + "name": "asset_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "7397:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 985, + "name": "deployWrappedAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1094, + "src": "7340:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_uint8_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,uint8) returns (address)" + } + }, + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7340:72:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7324:88:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 992, + "nodeType": "ExpressionStatement", + "src": "7324:88:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 999, + "name": "target_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 909, + "src": "7474:14:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1000, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 925, + "src": "7490:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 996, + "name": "wrapped_asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 966, + "src": "7454:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 995, + "name": "WrappedAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2147, + "src": "7441:12:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$2147_$", + "typeString": "type(contract WrappedAsset)" + } + }, + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7441:27:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_WrappedAsset_$2147", + "typeString": "contract WrappedAsset" + } + }, + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 1511, + "src": "7441:32:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7441:56:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1002, + "nodeType": "ExpressionStatement", + "src": "7441:56:1" + } + ] + } + } + ] + }, + "documentation": null, + "id": 1051, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "vaaTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 892, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 891, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1051, + "src": "6239:17:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 890, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6239:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6238:19:1" + }, + "returnParameters": { + "id": 893, + "nodeType": "ParameterList", + "parameters": [], + "src": "6266:0:1" + }, + "scope": 1420, + "src": "6218:1692:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1093, + "nodeType": "Block", + "src": "8047:808:1", + "statements": [ + { + "assignments": [1065], + "declarations": [ + { + "constant": false, + "id": 1065, + "mutability": "mutable", + "name": "targetBytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1093, + "src": "8225:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + }, + "typeName": { + "id": 1064, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "8225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1070, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1068, + "name": "wrappedAssetMaster", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 359, + "src": "8255:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1067, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8247:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes20_$", + "typeString": "type(bytes20)" + }, + "typeName": { + "id": 1066, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "8247:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8247:27:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8225:49:1" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "8293:348:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8307:24:1", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8326:4:1", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8320:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "8320:11:1" + }, + "variables": [ + { + "name": "clone", + "nodeType": "YulTypedName", + "src": "8311:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "clone", + "nodeType": "YulIdentifier", + "src": "8351:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8358:66:1", + "type": "", + "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8344:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "8344:81:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8344:81:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "clone", + "nodeType": "YulIdentifier", + "src": "8449:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8456:4:1", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8445:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8445:16:1" + }, + { + "name": "targetBytes", + "nodeType": "YulIdentifier", + "src": "8463:11:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8438:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "8438:37:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8438:37:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "clone", + "nodeType": "YulIdentifier", + "src": "8499:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8506:4:1", + "type": "", + "value": "0x28" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8495:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8495:16:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8513:66:1", + "type": "", + "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8488:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "8488:92:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8488:92:1" + }, + { + "nodeType": "YulAssignment", + "src": "8593:38:1", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8610:1:1", + "type": "", + "value": "0" + }, + { + "name": "clone", + "nodeType": "YulIdentifier", + "src": "8613:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8620:4:1", + "type": "", + "value": "0x37" + }, + { + "name": "seed", + "nodeType": "YulIdentifier", + "src": "8626:4:1" + } + ], + "functionName": { + "name": "create2", + "nodeType": "YulIdentifier", + "src": "8602:7:1" + }, + "nodeType": "YulFunctionCall", + "src": "8602:29:1" + }, + "variableNames": [ + { + "name": "asset", + "nodeType": "YulIdentifier", + "src": "8593:5:1" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 1062, + "isOffset": false, + "isSlot": false, + "src": "8593:5:1", + "valueSize": 1 + }, + { + "declaration": 1053, + "isOffset": false, + "isSlot": false, + "src": "8626:4:1", + "valueSize": 1 + }, + { + "declaration": 1065, + "isOffset": false, + "isSlot": false, + "src": "8463:11:1", + "valueSize": 1 + } + ], + "id": 1071, + "nodeType": "InlineAssembly", + "src": "8284:357:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1076, + "name": "token_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "8710:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1077, + "name": "token_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1057, + "src": "8723:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1078, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1059, + "src": "8738:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1073, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1062, + "src": "8692:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1072, + "name": "WrappedAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2147, + "src": "8679:12:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$2147_$", + "typeString": "type(contract WrappedAsset)" + } + }, + "id": 1074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8679:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_WrappedAsset_$2147", + "typeString": "contract WrappedAsset" + } + }, + "id": 1075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "initialize", + "nodeType": "MemberAccess", + "referencedDeclaration": 1490, + "src": "8679:30:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint8_$_t_bytes32_$_t_uint8_$returns$__$", + "typeString": "function (uint8,bytes32,uint8) external" + } + }, + "id": 1079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8679:68:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1080, + "nodeType": "ExpressionStatement", + "src": "8679:68:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1081, + "name": "wrappedAssets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "8783:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 1083, + "indexExpression": { + "argumentTypes": null, + "id": 1082, + "name": "seed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1053, + "src": "8797:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8783:19:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1084, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1062, + "src": "8805:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8783:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1086, + "nodeType": "ExpressionStatement", + "src": "8783:27:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1087, + "name": "isWrappedAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "8820:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1089, + "indexExpression": { + "argumentTypes": null, + "id": 1088, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1062, + "src": "8835:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8820:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8844:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "8820:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1092, + "nodeType": "ExpressionStatement", + "src": "8820:28:1" + } + ] + }, + "documentation": null, + "id": 1094, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployWrappedAsset", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1060, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1053, + "mutability": "mutable", + "name": "seed", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1094, + "src": "7944:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1052, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7944:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1055, + "mutability": "mutable", + "name": "token_chain", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1094, + "src": "7958:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1054, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7958:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1057, + "mutability": "mutable", + "name": "token_address", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1094, + "src": "7977:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1056, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7977:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1059, + "mutability": "mutable", + "name": "decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1094, + "src": "8000:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1058, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "8000:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7943:72:1" + }, + "returnParameters": { + "id": 1063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1062, + "mutability": "mutable", + "name": "asset", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1094, + "src": "8033:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1061, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8033:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8032:15:1" + }, + "scope": 1420, + "src": "7916:939:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1313, + "nodeType": "Block", + "src": "9057:1779:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1112, + "name": "target_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1102, + "src": "9075:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1113, + "name": "CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "9091:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "9075:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d757374206e6f74207472616e7366657220746f207468652073616d6520636861696e", + "id": 1115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9101:37:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_84da05290fceea4e386923ffe3e265c937087704025788355b73caadd151270b", + "typeString": "literal_string \"must not transfer to the same chain\"" + }, + "value": "must not transfer to the same chain" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_84da05290fceea4e386923ffe3e265c937087704025788355b73caadd151270b", + "typeString": "literal_string \"must not transfer to the same chain\"" + } + ], + "id": 1111, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "9067:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9067:72:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1117, + "nodeType": "ExpressionStatement", + "src": "9067:72:1" + }, + { + "assignments": [1119], + "declarations": [ + { + "constant": false, + "id": 1119, + "mutability": "mutable", + "name": "asset_chain", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1313, + "src": "9150:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1118, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9150:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1121, + "initialValue": { + "argumentTypes": null, + "id": 1120, + "name": "CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "9170:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9150:28:1" + }, + { + "assignments": [1123], + "declarations": [ + { + "constant": false, + "id": 1123, + "mutability": "mutable", + "name": "asset_address", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1313, + "src": "9188:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1122, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9188:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1124, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9188:21:1" + }, + { + "assignments": [1126], + "declarations": [ + { + "constant": false, + "id": 1126, + "mutability": "mutable", + "name": "decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1313, + "src": "9219:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1125, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9219:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1132, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1128, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "9242:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1127, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3008, + "src": "9236:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$3008_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 1129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9236:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$3008", + "typeString": "contract ERC20" + } + }, + "id": 1130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "decimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 2584, + "src": "9236:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 1131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9236:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9219:40:1" + }, + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1133, + "name": "isWrappedAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "9274:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1135, + "indexExpression": { + "argumentTypes": null, + "id": 1134, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "9289:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9274:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1286, + "nodeType": "Block", + "src": "9496:1091:1", + "statements": [ + { + "assignments": [1163], + "declarations": [ + { + "constant": false, + "id": 1163, + "mutability": "mutable", + "name": "balanceBefore", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1286, + "src": "9510:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9510:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1173, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1170, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "9566:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + ], + "id": 1169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9558:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1168, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9558:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9558:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1165, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "9541:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1164, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "9534:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$3086_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9534:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 1167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 3025, + "src": "9534:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9534:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9510:62:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1178, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9617:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9617:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1182, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "9637:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + ], + "id": 1181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9629:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9629:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9629:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1184, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "9644:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1175, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "9593:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1174, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "9586:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$3086_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9586:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 1177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 3145, + "src": "9586:30:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3086_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$3086_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9586:65:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1186, + "nodeType": "ExpressionStatement", + "src": "9586:65:1" + }, + { + "assignments": [1188], + "declarations": [ + { + "constant": false, + "id": 1188, + "mutability": "mutable", + "name": "balanceAfter", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1286, + "src": "9665:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1187, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9665:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1198, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1195, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "9720:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + ], + "id": 1194, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9712:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1193, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9712:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9712:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1190, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "9695:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1189, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "9688:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$3086_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9688:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 1192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 3025, + "src": "9688:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9688:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9665:61:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1199, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "9931:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1202, + "name": "balanceBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1163, + "src": "9957:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1200, + "name": "balanceAfter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1188, + "src": "9940:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2354, + "src": "9940:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9940:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9931:40:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1205, + "nodeType": "ExpressionStatement", + "src": "9931:40:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1206, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "10046:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "39", + "id": 1207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10057:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "10046:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1254, + "nodeType": "IfStatement", + "src": "10042:344:1", + "trueBody": { + "id": 1253, + "nodeType": "Block", + "src": "10060:326:1", + "statements": [ + { + "assignments": [1210], + "declarations": [ + { + "constant": false, + "id": 1210, + "mutability": "mutable", + "name": "original_amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1253, + "src": "10078:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10078:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1212, + "initialValue": { + "argumentTypes": null, + "id": 1211, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "10104:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10078:32:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1213, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "10128:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1216, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10148:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1219, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "10162:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "39", + "id": 1220, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10173:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "10162:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10154:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1217, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10154:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10154:21:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10148:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1214, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "10137:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 2410, + "src": "10137:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10137:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10128:48:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1226, + "nodeType": "ExpressionStatement", + "src": "10128:48:1" + }, + { + "condition": { + "argumentTypes": null, + "id": 1227, + "name": "refund_dust", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "10199:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1248, + "nodeType": "IfStatement", + "src": "10195:146:1", + "trueBody": { + "id": 1247, + "nodeType": "Block", + "src": "10212:129:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1232, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "10261:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10261:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10293:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1239, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "10307:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "39", + "id": 1240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10318:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "10307:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10299:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1237, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10299:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10299:21:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10293:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1234, + "name": "original_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1210, + "src": "10273:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mod", + "nodeType": "MemberAccess", + "referencedDeclaration": 2432, + "src": "10273:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10273:48:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1229, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "10241:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1228, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "10234:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$3086_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10234:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 1231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 3120, + "src": "10234:26:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3086_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$3086_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 1245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10234:88:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1246, + "nodeType": "ExpressionStatement", + "src": "10234:88:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1249, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "10359:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "39", + "id": 1250, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10370:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "10359:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 1252, + "nodeType": "ExpressionStatement", + "src": "10359:12:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10425:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1262, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "10445:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1261, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3008, + "src": "10439:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$3008_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 1263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10439:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$3008", + "typeString": "contract ERC20" + } + }, + "id": 1264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "decimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 2584, + "src": "10439:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 1265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10439:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "39", + "id": 1266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10465:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "10439:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1260, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10431:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1259, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10431:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10431:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10425:42:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1256, + "name": "balanceAfter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1188, + "src": "10408:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 2410, + "src": "10408:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10408:60:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 1271, + "name": "MAX_UINT64", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "10472:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "10408:74:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6272696467652062616c616e636520776f756c6420657863656564206d6178696d756d", + "id": 1273, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10484:37:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4", + "typeString": "literal_string \"bridge balance would exceed maximum\"" + }, + "value": "bridge balance would exceed maximum" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4", + "typeString": "literal_string \"bridge balance would exceed maximum\"" + } + ], + "id": 1255, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "10400:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10400:122:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1275, + "nodeType": "ExpressionStatement", + "src": "10400:122:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1276, + "name": "asset_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1123, + "src": "10537:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1281, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "10569:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1280, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10561:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1279, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10561:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10561:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1278, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10553:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 1277, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10553:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10553:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "10537:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1285, + "nodeType": "ExpressionStatement", + "src": "10537:39:1" + } + ] + }, + "id": 1287, + "nodeType": "IfStatement", + "src": "9270:1317:1", + "trueBody": { + "id": 1161, + "nodeType": "Block", + "src": "9297:193:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1140, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9336:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9336:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1142, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "9348:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1137, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "9324:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1136, + "name": "WrappedAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2147, + "src": "9311:12:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$2147_$", + "typeString": "type(contract WrappedAsset)" + } + }, + "id": 1138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9311:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_WrappedAsset_$2147", + "typeString": "contract WrappedAsset" + } + }, + "id": 1139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 1532, + "src": "9311:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 1143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9311:44:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1144, + "nodeType": "ExpressionStatement", + "src": "9311:44:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1145, + "name": "asset_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "9369:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1147, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "9396:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1146, + "name": "WrappedAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2147, + "src": "9383:12:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$2147_$", + "typeString": "type(contract WrappedAsset)" + } + }, + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9383:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_WrappedAsset_$2147", + "typeString": "contract WrappedAsset" + } + }, + "id": 1149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "assetChain", + "nodeType": "MemberAccess", + "referencedDeclaration": 1443, + "src": "9383:30:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9383:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "9369:46:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 1152, + "nodeType": "ExpressionStatement", + "src": "9369:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1153, + "name": "asset_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1123, + "src": "9429:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1155, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "9458:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1154, + "name": "WrappedAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2147, + "src": "9445:12:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$2147_$", + "typeString": "type(contract WrappedAsset)" + } + }, + "id": 1156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9445:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_WrappedAsset_$2147", + "typeString": "contract WrappedAsset" + } + }, + "id": 1157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "assetAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 1445, + "src": "9445:32:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } + }, + "id": 1158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9445:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "9429:50:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1160, + "nodeType": "ExpressionStatement", + "src": "9429:50:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1289, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "10644:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10654:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10644:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472756e636174656420616d6f756e74206d757374206e6f742062652030", + "id": 1292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10657:32:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91dc3b6ab9754748867317f89b73413ba314ee8a1acb42b6836d39d61d9e310e", + "typeString": "literal_string \"truncated amount must not be 0\"" + }, + "value": "truncated amount must not be 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91dc3b6ab9754748867317f89b73413ba314ee8a1acb42b6836d39d61d9e310e", + "typeString": "literal_string \"truncated amount must not be 0\"" + } + ], + "id": 1288, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "10636:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10636:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1294, + "nodeType": "ExpressionStatement", + "src": "10636:54:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1296, + "name": "target_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1102, + "src": "10722:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1297, + "name": "asset_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "10736:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1298, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "10749:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1299, + "name": "asset_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1123, + "src": "10759:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1304, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "10790:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10790:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10782:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1302, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10782:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10782:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10774:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 1300, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10774:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10774:28:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1308, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "10804:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1309, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "10815:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1310, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "10823:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 1295, + "name": "LogTokensLocked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "10706:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", + "typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" + } + }, + "id": 1311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10706:123:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1312, + "nodeType": "EmitStatement", + "src": "10701:128:1" + } + ] + }, + "documentation": null, + "functionSelector": "70713960", + "id": 1314, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1109, + "modifierName": { + "argumentTypes": null, + "id": 1108, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3657, + "src": "9044:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9044:12:1" + } + ], + "name": "lockAssets", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1096, + "mutability": "mutable", + "name": "asset", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1314, + "src": "8890:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1095, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8890:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1098, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1314, + "src": "8913:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1097, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8913:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1100, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1314, + "src": "8937:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1099, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8937:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1102, + "mutability": "mutable", + "name": "target_chain", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1314, + "src": "8964:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1101, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "8964:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1104, + "mutability": "mutable", + "name": "nonce", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1314, + "src": "8992:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 1103, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "8992:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1106, + "mutability": "mutable", + "name": "refund_dust", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1314, + "src": "9014:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1105, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9014:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8880:156:1" + }, + "returnParameters": { + "id": 1110, + "nodeType": "ParameterList", + "parameters": [], + "src": "9057:0:1" + }, + "scope": 1420, + "src": "8861:1975:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1402, + "nodeType": "Block", + "src": "10970:636:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1326, + "name": "target_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1318, + "src": "10988:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1327, + "name": "CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "11004:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "10988:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d757374206e6f74207472616e7366657220746f207468652073616d6520636861696e", + "id": 1329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11014:37:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_84da05290fceea4e386923ffe3e265c937087704025788355b73caadd151270b", + "typeString": "literal_string \"must not transfer to the same chain\"" + }, + "value": "must not transfer to the same chain" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_84da05290fceea4e386923ffe3e265c937087704025788355b73caadd151270b", + "typeString": "literal_string \"must not transfer to the same chain\"" + } + ], + "id": 1325, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "10980:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10980:72:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1331, + "nodeType": "ExpressionStatement", + "src": "10980:72:1" + }, + { + "assignments": [1333], + "declarations": [ + { + "constant": false, + "id": 1333, + "mutability": "mutable", + "name": "remainder", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1402, + "src": "11063:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1332, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11063:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1341, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + }, + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11097:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "39", + "id": 1338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11103:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "11097:7:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1334, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11083:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11083:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mod", + "nodeType": "MemberAccess", + "referencedDeclaration": 2432, + "src": "11083:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11083:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11063:42:1" + }, + { + "assignments": [1343], + "declarations": [ + { + "constant": false, + "id": 1343, + "mutability": "mutable", + "name": "transfer_amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1402, + "src": "11115:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1342, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11115:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1351, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + }, + "id": 1349, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11155:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "39", + "id": 1348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11161:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "11155:7:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1344, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11141:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11141:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 2410, + "src": "11141:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11141:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11115:48:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1353, + "name": "transfer_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "11181:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11200:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11181:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472756e636174656420616d6f756e74206d757374206e6f742062652030", + "id": 1356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11203:32:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91dc3b6ab9754748867317f89b73413ba314ee8a1acb42b6836d39d61d9e310e", + "typeString": "literal_string \"truncated amount must not be 0\"" + }, + "value": "truncated amount must not be 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91dc3b6ab9754748867317f89b73413ba314ee8a1acb42b6836d39d61d9e310e", + "typeString": "literal_string \"truncated amount must not be 0\"" + } + ], + "id": 1352, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "11173:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11173:63:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1358, + "nodeType": "ExpressionStatement", + "src": "11173:63:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1364, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1333, + "src": "11302:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1359, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11282:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11282:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 1363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11282:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11282:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1366, + "nodeType": "ExpressionStatement", + "src": "11282:30:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1368, + "name": "WETHAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "11361:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1367, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1431, + "src": "11356:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WETH_$1431_$", + "typeString": "type(contract WETH)" + } + }, + "id": 1369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11356:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_WETH_$1431", + "typeString": "contract WETH" + } + }, + "id": 1370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1425, + "src": "11356:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$", + "typeString": "function () payable external" + } + }, + "id": 1375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": ["value"], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1371, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11390:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11390:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 1373, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1333, + "src": "11402:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11390:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "11356:56:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$value", + "typeString": "function () payable external" + } + }, + "id": 1376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11356:58:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1377, + "nodeType": "ExpressionStatement", + "src": "11356:58:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1379, + "name": "target_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1318, + "src": "11477:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1380, + "name": "CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "11491:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "hexValue": "39", + "id": 1381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11501:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1386, + "name": "WETHAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "11520:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11512:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11512:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11512:20:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1383, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11504:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 1382, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11504:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11504:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1393, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11551:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11551:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11543:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11543:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11543:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1390, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11535:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 1389, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11535:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11535:28:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1397, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1316, + "src": "11565:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1398, + "name": "transfer_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "11576:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1399, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1320, + "src": "11593:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 1378, + "name": "LogTokensLocked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "11461:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", + "typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" + } + }, + "id": 1400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11461:138:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1401, + "nodeType": "EmitStatement", + "src": "11456:143:1" + } + ] + }, + "documentation": null, + "functionSelector": "58d62e46", + "id": 1403, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1323, + "modifierName": { + "argumentTypes": null, + "id": 1322, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3657, + "src": "10957:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "10957:12:1" + } + ], + "name": "lockETH", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1316, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1403, + "src": "10868:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1315, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10868:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1318, + "mutability": "mutable", + "name": "target_chain", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1403, + "src": "10895:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1317, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10895:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1320, + "mutability": "mutable", + "name": "nonce", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1403, + "src": "10923:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 1319, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "10923:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10858:83:1" + }, + "returnParameters": { + "id": 1324, + "nodeType": "ParameterList", + "parameters": [], + "src": "10970:0:1" + }, + "scope": 1420, + "src": "10842:764:1", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1410, + "nodeType": "Block", + "src": "11640:57:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", + "id": 1407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11648:46:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", + "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" + }, + "value": "please use lockETH to transfer ETH to Solana" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", + "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" + } + ], + "id": 1406, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [-19, -19], + "referencedDeclaration": -19, + "src": "11641:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 1408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11641:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1409, + "nodeType": "ExpressionStatement", + "src": "11641:54:1" + } + ] + }, + "documentation": null, + "id": 1411, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1404, + "nodeType": "ParameterList", + "parameters": [], + "src": "11620:2:1" + }, + "returnParameters": { + "id": 1405, + "nodeType": "ParameterList", + "parameters": [], + "src": "11640:0:1" + }, + "scope": 1420, + "src": "11612:85:1", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1418, + "nodeType": "Block", + "src": "11730:57:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", + "id": 1415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11738:46:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", + "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" + }, + "value": "please use lockETH to transfer ETH to Solana" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", + "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" + } + ], + "id": 1414, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [-19, -19], + "referencedDeclaration": -19, + "src": "11731:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 1416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11731:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1417, + "nodeType": "ExpressionStatement", + "src": "11731:54:1" + } + ] + }, + "documentation": null, + "id": 1419, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1412, + "nodeType": "ParameterList", + "parameters": [], + "src": "11710:2:1" + }, + "returnParameters": { + "id": 1413, + "nodeType": "ParameterList", + "parameters": [], + "src": "11730:0:1" + }, + "scope": 1420, + "src": "11703:84:1", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1432, + "src": "463:11326:1" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1421, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3086, + "src": "11810:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 1422, + "nodeType": "InheritanceSpecifier", + "src": "11810:6:1" + } + ], + "contractDependencies": [3086], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "id": 1431, + "linearizedBaseContracts": [1431, 3086], + "name": "WETH", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "functionSelector": "d0e30db0", + "id": 1425, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1423, + "nodeType": "ParameterList", + "parameters": [], + "src": "11839:2:1" + }, + "returnParameters": { + "id": 1424, + "nodeType": "ParameterList", + "parameters": [], + "src": "11858:0:1" + }, + "scope": 1431, + "src": "11823:36:1", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "2e1a7d4d", + "id": 1430, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1428, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1427, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1430, + "src": "11883:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1426, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11883:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11882:16:1" + }, + "returnParameters": { + "id": 1429, + "nodeType": "ParameterList", + "parameters": [], + "src": "11907:0:1" + }, + "scope": 1431, + "src": "11865:43:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1432, + "src": "11792:118:1" + } + ], + "src": "64:11847:1" + }, + "legacyAST": { + "attributes": { + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/Wormhole.sol", + "exportedSymbols": { + "WETH": [1431], + "Wormhole": [1420] + }, + "license": "Apache 2" + }, + "children": [ + { + "attributes": { + "literals": ["solidity", "^", "0.6", ".0"] + }, + "id": 335, + "name": "PragmaDirective", + "src": "64:23:1" + }, + { + "attributes": { + "literals": ["experimental", "ABIEncoderV2"] + }, + "id": 336, + "name": "PragmaDirective", + "src": "88:33:1" + }, + { + "attributes": { + "SourceUnit": 3009, + "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 337, + "name": "ImportDirective", + "src": "123:55:1" + }, + { + "attributes": { + "SourceUnit": 3087, + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 338, + "name": "ImportDirective", + "src": "179:56:1" + }, + { + "attributes": { + "SourceUnit": 3300, + "absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 339, + "name": "ImportDirective", + "src": "236:59:1" + }, + { + "attributes": { + "SourceUnit": 2506, + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "file": "@openzeppelin/contracts/math/SafeMath.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 340, + "name": "ImportDirective", + "src": "296:51:1" + }, + { + "attributes": { + "SourceUnit": 3659, + "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 341, + "name": "ImportDirective", + "src": "348:59:1" + }, + { + "attributes": { + "SourceUnit": 334, + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/BytesLib.sol", + "file": "./BytesLib.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 342, + "name": "ImportDirective", + "src": "408:24:1" + }, + { + "attributes": { + "SourceUnit": 2148, + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol", + "file": "./WrappedAsset.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 343, + "name": "ImportDirective", + "src": "433:28:1" + }, + { + "attributes": { + "abstract": false, + "contractDependencies": [3658], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "linearizedBaseContracts": [1420, 3658], + "name": "Wormhole", + "scope": 1432 + }, + "children": [ + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ReentrancyGuard", + "referencedDeclaration": 3658, + "type": "contract ReentrancyGuard" + }, + "id": 344, + "name": "UserDefinedTypeName", + "src": "484:15:1" + } + ], + "id": 345, + "name": "InheritanceSpecifier", + "src": "484:15:1" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeERC20", + "referencedDeclaration": 3299, + "type": "library SafeERC20" + }, + "id": 346, + "name": "UserDefinedTypeName", + "src": "512:9:1" + }, + { + "attributes": { + "contractScope": null, + "name": "IERC20", + "referencedDeclaration": 3086, + "type": "contract IERC20" + }, + "id": 347, + "name": "UserDefinedTypeName", + "src": "526:6:1" + } + ], + "id": 348, + "name": "UsingForDirective", + "src": "506:27:1" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "BytesLib", + "referencedDeclaration": 333, + "type": "library BytesLib" + }, + "id": 349, + "name": "UserDefinedTypeName", + "src": "544:8:1" + }, + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 350, + "name": "ElementaryTypeName", + "src": "557:5:1" + } + ], + "id": 351, + "name": "UsingForDirective", + "src": "538:25:1" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeMath", + "referencedDeclaration": 2505, + "type": "library SafeMath" + }, + "id": 352, + "name": "UserDefinedTypeName", + "src": "574:8:1" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 353, + "name": "ElementaryTypeName", + "src": "587:7:1" + } + ], + "id": 354, + "name": "UsingForDirective", + "src": "568:27:1" + }, + { + "attributes": { + "constant": true, + "mutability": "constant", + "name": "MAX_UINT64", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "uint64", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 355, + "name": "ElementaryTypeName", + "src": "601:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31385f3434365f3734345f3037335f3730395f3535315f363135", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 18446744073709551615", + "value": "18_446_744_073_709_551_615" + }, + "id": 356, + "name": "Literal", + "src": "630:26:1" + } + ], + "id": 357, + "name": "VariableDeclaration", + "src": "601:55:1" + }, + { + "attributes": { + "constant": false, + "functionSelector": "99da1d3c", + "mutability": "mutable", + "name": "wrappedAssetMaster", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 358, + "name": "ElementaryTypeName", + "src": "708:7:1" + } + ], + "id": 359, + "name": "VariableDeclaration", + "src": "708:33:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "CHAIN_ID", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "uint8", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 360, + "name": "ElementaryTypeName", + "src": "776:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "32", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 2", + "value": "2" + }, + "id": 361, + "name": "Literal", + "src": "793:1:1" + } + ], + "id": 362, + "name": "VariableDeclaration", + "src": "776:18:1" + }, + { + "attributes": { + "constant": true, + "mutability": "constant", + "name": "WETHAddress", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 363, + "name": "ElementaryTypeName", + "src": "846:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "307843303261614133396232323346453844304130653543344632376541443930383343373536436332", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "address payable", + "value": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + "id": 364, + "name": "Literal", + "src": "877:42:1" + } + ], + "id": 365, + "name": "VariableDeclaration", + "src": "846:73:1" + }, + { + "attributes": { + "canonicalName": "Wormhole.GuardianSet", + "name": "GuardianSet", + "scope": 1420, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "keys", + "overrides": null, + "scope": 371, + "stateVariable": false, + "storageLocation": "default", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 366, + "name": "ElementaryTypeName", + "src": "955:7:1" + } + ], + "id": 367, + "name": "ArrayTypeName", + "src": "955:9:1" + } + ], + "id": 368, + "name": "VariableDeclaration", + "src": "955:14:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "expiration_time", + "overrides": null, + "scope": 371, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 369, + "name": "ElementaryTypeName", + "src": "979:6:1" + } + ], + "id": 370, + "name": "VariableDeclaration", + "src": "979:22:1" + } + ], + "id": 371, + "name": "StructDefinition", + "src": "926:82:1" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "LogGuardianSetChanged" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "oldGuardianIndex", + "overrides": null, + "scope": 377, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 372, + "name": "ElementaryTypeName", + "src": "1051:6:1" + } + ], + "id": 373, + "name": "VariableDeclaration", + "src": "1051:23:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "newGuardianIndex", + "overrides": null, + "scope": 377, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 374, + "name": "ElementaryTypeName", + "src": "1084:6:1" + } + ], + "id": 375, + "name": "VariableDeclaration", + "src": "1084:23:1" + } + ], + "id": 376, + "name": "ParameterList", + "src": "1041:72:1" + } + ], + "id": 377, + "name": "EventDefinition", + "src": "1014:100:1" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "LogTokensLocked" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "target_chain", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 378, + "name": "ElementaryTypeName", + "src": "1151:5:1" + } + ], + "id": 379, + "name": "VariableDeclaration", + "src": "1151:18:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "token_chain", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 380, + "name": "ElementaryTypeName", + "src": "1179:5:1" + } + ], + "id": 381, + "name": "VariableDeclaration", + "src": "1179:17:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "token_decimals", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 382, + "name": "ElementaryTypeName", + "src": "1206:5:1" + } + ], + "id": 383, + "name": "VariableDeclaration", + "src": "1206:20:1" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "mutability": "mutable", + "name": "token", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 384, + "name": "ElementaryTypeName", + "src": "1236:7:1" + } + ], + "id": 385, + "name": "VariableDeclaration", + "src": "1236:21:1" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 386, + "name": "ElementaryTypeName", + "src": "1267:7:1" + } + ], + "id": 387, + "name": "VariableDeclaration", + "src": "1267:22:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 388, + "name": "ElementaryTypeName", + "src": "1299:7:1" + } + ], + "id": 389, + "name": "VariableDeclaration", + "src": "1299:17:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 390, + "name": "ElementaryTypeName", + "src": "1326:7:1" + } + ], + "id": 391, + "name": "VariableDeclaration", + "src": "1326:14:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "nonce", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 392, + "name": "ElementaryTypeName", + "src": "1350:6:1" + } + ], + "id": 393, + "name": "VariableDeclaration", + "src": "1350:12:1" + } + ], + "id": 394, + "name": "ParameterList", + "src": "1141:227:1" + } + ], + "id": 395, + "name": "EventDefinition", + "src": "1120:249:1" + }, + { + "attributes": { + "canonicalName": "Wormhole.ParsedVAA", + "name": "ParsedVAA", + "scope": 1420, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "version", + "overrides": null, + "scope": 408, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 396, + "name": "ElementaryTypeName", + "src": "1402:5:1" + } + ], + "id": 397, + "name": "VariableDeclaration", + "src": "1402:13:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "hash", + "overrides": null, + "scope": 408, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 398, + "name": "ElementaryTypeName", + "src": "1425:7:1" + } + ], + "id": 399, + "name": "VariableDeclaration", + "src": "1425:12:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "guardian_set_index", + "overrides": null, + "scope": 408, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 400, + "name": "ElementaryTypeName", + "src": "1447:6:1" + } + ], + "id": 401, + "name": "VariableDeclaration", + "src": "1447:25:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "timestamp", + "overrides": null, + "scope": 408, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 402, + "name": "ElementaryTypeName", + "src": "1482:6:1" + } + ], + "id": 403, + "name": "VariableDeclaration", + "src": "1482:16:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "action", + "overrides": null, + "scope": 408, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 404, + "name": "ElementaryTypeName", + "src": "1508:5:1" + } + ], + "id": 405, + "name": "VariableDeclaration", + "src": "1508:12:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "payload", + "overrides": null, + "scope": 408, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 406, + "name": "ElementaryTypeName", + "src": "1530:5:1" + } + ], + "id": 407, + "name": "VariableDeclaration", + "src": "1530:13:1" + } + ], + "id": 408, + "name": "StructDefinition", + "src": "1375:175:1" + }, + { + "attributes": { + "constant": false, + "functionSelector": "42b0aefa", + "mutability": "mutable", + "name": "guardian_sets", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(uint32 => struct Wormhole.GuardianSet)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(uint32 => struct Wormhole.GuardianSet)" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 409, + "name": "ElementaryTypeName", + "src": "1617:6:1" + }, + { + "attributes": { + "contractScope": null, + "name": "GuardianSet", + "referencedDeclaration": 371, + "type": "struct Wormhole.GuardianSet" + }, + "id": 410, + "name": "UserDefinedTypeName", + "src": "1627:11:1" + } + ], + "id": 411, + "name": "Mapping", + "src": "1609:30:1" + } + ], + "id": 412, + "name": "VariableDeclaration", + "src": "1609:51:1" + }, + { + "attributes": { + "constant": false, + "functionSelector": "822d82b3", + "mutability": "mutable", + "name": "guardian_set_index", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 413, + "name": "ElementaryTypeName", + "src": "1701:6:1" + } + ], + "id": 414, + "name": "VariableDeclaration", + "src": "1701:32:1" + }, + { + "attributes": { + "constant": false, + "functionSelector": "4db47840", + "mutability": "mutable", + "name": "guardian_set_expirity", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 415, + "name": "ElementaryTypeName", + "src": "1819:6:1" + } + ], + "id": 416, + "name": "VariableDeclaration", + "src": "1819:35:1" + }, + { + "attributes": { + "constant": false, + "functionSelector": "a31fe409", + "mutability": "mutable", + "name": "consumedVAAs", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(bytes32 => bool)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(bytes32 => bool)" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 417, + "name": "ElementaryTypeName", + "src": "1908:7:1" + }, + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 418, + "name": "ElementaryTypeName", + "src": "1919:4:1" + } + ], + "id": 419, + "name": "Mapping", + "src": "1900:24:1" + } + ], + "id": 420, + "name": "VariableDeclaration", + "src": "1900:44:1" + }, + { + "attributes": { + "constant": false, + "functionSelector": "b6694c2a", + "mutability": "mutable", + "name": "wrappedAssets", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(bytes32 => address)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(bytes32 => address)" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 421, + "name": "ElementaryTypeName", + "src": "2007:7:1" + }, + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 422, + "name": "ElementaryTypeName", + "src": "2018:7:1" + } + ], + "id": 423, + "name": "Mapping", + "src": "1999:27:1" + } + ], + "id": 424, + "name": "VariableDeclaration", + "src": "1999:48:1" + }, + { + "attributes": { + "constant": false, + "functionSelector": "1a2be4da", + "mutability": "mutable", + "name": "isWrappedAsset", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => bool)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => bool)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 425, + "name": "ElementaryTypeName", + "src": "2061:7:1" + }, + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 426, + "name": "ElementaryTypeName", + "src": "2072:4:1" + } + ], + "id": 427, + "name": "Mapping", + "src": "2053:24:1" + } + ], + "id": 428, + "name": "VariableDeclaration", + "src": "2053:46:1" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": true, + "kind": "constructor", + "modifiers": [null], + "name": "", + "overrides": null, + "scope": 1420, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "initial_guardian_set", + "overrides": null, + "scope": 456, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct Wormhole.GuardianSet", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "GuardianSet", + "referencedDeclaration": 371, + "type": "struct Wormhole.GuardianSet" + }, + "id": 429, + "name": "UserDefinedTypeName", + "src": "2118:11:1" + } + ], + "id": 430, + "name": "VariableDeclaration", + "src": "2118:39:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "wrapped_asset_master", + "overrides": null, + "scope": 456, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 431, + "name": "ElementaryTypeName", + "src": "2159:7:1" + } + ], + "id": 432, + "name": "VariableDeclaration", + "src": "2159:28:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_guardian_set_expirity", + "overrides": null, + "scope": 456, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 433, + "name": "ElementaryTypeName", + "src": "2189:6:1" + } + ], + "id": 434, + "name": "VariableDeclaration", + "src": "2189:29:1" + } + ], + "id": 435, + "name": "ParameterList", + "src": "2117:102:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 436, + "name": "ParameterList", + "src": "2227:0:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "struct Wormhole.GuardianSet storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "struct Wormhole.GuardianSet storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 412, + "type": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)", + "value": "guardian_sets" + }, + "id": 437, + "name": "Identifier", + "src": "2237:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 438, + "name": "Literal", + "src": "2251:1:1" + } + ], + "id": 439, + "name": "IndexAccess", + "src": "2237:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 430, + "type": "struct Wormhole.GuardianSet memory", + "value": "initial_guardian_set" + }, + "id": 440, + "name": "Identifier", + "src": "2256:20:1" + } + ], + "id": 441, + "name": "Assignment", + "src": "2237:39:1" + } + ], + "id": 442, + "name": "ExpressionStatement", + "src": "2237:39:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" + }, + "id": 443, + "name": "Identifier", + "src": "2329:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 444, + "name": "Literal", + "src": "2350:1:1" + } + ], + "id": 445, + "name": "Assignment", + "src": "2329:22:1" + } + ], + "id": 446, + "name": "ExpressionStatement", + "src": "2329:22:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 416, + "type": "uint32", + "value": "guardian_set_expirity" + }, + "id": 447, + "name": "Identifier", + "src": "2361:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 434, + "type": "uint32", + "value": "_guardian_set_expirity" + }, + "id": 448, + "name": "Identifier", + "src": "2385:22:1" + } + ], + "id": 449, + "name": "Assignment", + "src": "2361:46:1" + } + ], + "id": 450, + "name": "ExpressionStatement", + "src": "2361:46:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 359, + "type": "address", + "value": "wrappedAssetMaster" + }, + "id": 451, + "name": "Identifier", + "src": "2418:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 432, + "type": "address", + "value": "wrapped_asset_master" + }, + "id": 452, + "name": "Identifier", + "src": "2439:20:1" + } + ], + "id": 453, + "name": "Assignment", + "src": "2418:41:1" + } + ], + "id": 454, + "name": "ExpressionStatement", + "src": "2418:41:1" + } + ], + "id": 455, + "name": "Block", + "src": "2227:239:1" + } + ], + "id": 456, + "name": "FunctionDefinition", + "src": "2106:360:1" + }, + { + "attributes": { + "documentation": null, + "functionSelector": "f951975a", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "getGuardianSet", + "overrides": null, + "scope": 1420, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "idx", + "overrides": null, + "scope": 468, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 457, + "name": "ElementaryTypeName", + "src": "2496:6:1" + } + ], + "id": 458, + "name": "VariableDeclaration", + "src": "2496:10:1" + } + ], + "id": 459, + "name": "ParameterList", + "src": "2495:12:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "gs", + "overrides": null, + "scope": 468, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct Wormhole.GuardianSet", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "GuardianSet", + "referencedDeclaration": 371, + "type": "struct Wormhole.GuardianSet" + }, + "id": 460, + "name": "UserDefinedTypeName", + "src": "2529:11:1" + } + ], + "id": 461, + "name": "VariableDeclaration", + "src": "2529:21:1" + } + ], + "id": 462, + "name": "ParameterList", + "src": "2528:23:1" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 462 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct Wormhole.GuardianSet storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 412, + "type": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)", + "value": "guardian_sets" + }, + "id": 463, + "name": "Identifier", + "src": "2569:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 458, + "type": "uint32", + "value": "idx" + }, + "id": 464, + "name": "Identifier", + "src": "2583:3:1" + } + ], + "id": 465, + "name": "IndexAccess", + "src": "2569:18:1" + } + ], + "id": 466, + "name": "Return", + "src": "2562:25:1" + } + ], + "id": 467, + "name": "Block", + "src": "2552:42:1" + } + ], + "id": 468, + "name": "FunctionDefinition", + "src": "2472:122:1" + }, + { + "attributes": { + "documentation": null, + "functionSelector": "3bc0aee6", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "submitVAA", + "overrides": null, + "scope": 1420, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "vaa", + "overrides": null, + "scope": 524, + "stateVariable": false, + "storageLocation": "calldata", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 469, + "name": "ElementaryTypeName", + "src": "2628:5:1" + } + ], + "id": 470, + "name": "VariableDeclaration", + "src": "2628:18:1" + } + ], + "id": 471, + "name": "ParameterList", + "src": "2618:34:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 474, + "name": "ParameterList", + "src": "2673:0:1" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3657, + "type": "modifier ()", + "value": "nonReentrant" + }, + "id": 472, + "name": "Identifier", + "src": "2660:12:1" + } + ], + "id": 473, + "name": "ModifierInvocation", + "src": "2660:12:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [476] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "parsed_vaa", + "overrides": null, + "scope": 523, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct Wormhole.ParsedVAA", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ParsedVAA", + "referencedDeclaration": 408, + "type": "struct Wormhole.ParsedVAA" + }, + "id": 475, + "name": "UserDefinedTypeName", + "src": "2683:9:1" + } + ], + "id": 476, + "name": "VariableDeclaration", + "src": "2683:27:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "struct Wormhole.ParsedVAA memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 781, + "type": "function (bytes calldata) view returns (struct Wormhole.ParsedVAA memory)", + "value": "parseAndVerifyVAA" + }, + "id": 477, + "name": "Identifier", + "src": "2713:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 470, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 478, + "name": "Identifier", + "src": "2731:3:1" + } + ], + "id": 479, + "name": "FunctionCall", + "src": "2713:22:1" + } + ], + "id": 480, + "name": "VariableDeclarationStatement", + "src": "2683:52:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "action", + "referencedDeclaration": 405, + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 476, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 481, + "name": "Identifier", + "src": "2772:10:1" + } + ], + "id": 482, + "name": "MemberAccess", + "src": "2772:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30783031", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "0x01" + }, + "id": 483, + "name": "Literal", + "src": "2793:4:1" + } + ], + "id": 484, + "name": "BinaryOperation", + "src": "2772:25:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", + "typeString": "literal_string \"only the current guardian set can change the guardian set\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 485, + "name": "Identifier", + "src": "2813:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "guardian_set_index", + "referencedDeclaration": 401, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 476, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 486, + "name": "Identifier", + "src": "2821:10:1" + } + ], + "id": 487, + "name": "MemberAccess", + "src": "2821:29:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" + }, + "id": 488, + "name": "Identifier", + "src": "2854:18:1" + } + ], + "id": 489, + "name": "BinaryOperation", + "src": "2821:51:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "6f6e6c79207468652063757272656e7420677561726469616e207365742063616e206368616e67652074686520677561726469616e20736574", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"only the current guardian set can change the guardian set\"", + "value": "only the current guardian set can change the guardian set" + }, + "id": 490, + "name": "Literal", + "src": "2874:59:1" + } + ], + "id": 491, + "name": "FunctionCall", + "src": "2813:121:1" + } + ], + "id": 492, + "name": "ExpressionStatement", + "src": "2813:121:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 889, + "type": "function (bytes memory)", + "value": "vaaUpdateGuardianSet" + }, + "id": 493, + "name": "Identifier", + "src": "2948:20:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "payload", + "referencedDeclaration": 407, + "type": "bytes memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 476, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 494, + "name": "Identifier", + "src": "2969:10:1" + } + ], + "id": 495, + "name": "MemberAccess", + "src": "2969:18:1" + } + ], + "id": 496, + "name": "FunctionCall", + "src": "2948:40:1" + } + ], + "id": 497, + "name": "ExpressionStatement", + "src": "2948:40:1" + } + ], + "id": 498, + "name": "Block", + "src": "2799:200:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "action", + "referencedDeclaration": 405, + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 476, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 499, + "name": "Identifier", + "src": "3009:10:1" + } + ], + "id": 500, + "name": "MemberAccess", + "src": "3009:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30783130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 16", + "value": "0x10" + }, + "id": 501, + "name": "Literal", + "src": "3030:4:1" + } + ], + "id": 502, + "name": "BinaryOperation", + "src": "3009:25:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1051, + "type": "function (bytes memory)", + "value": "vaaTransfer" + }, + "id": 503, + "name": "Identifier", + "src": "3050:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "payload", + "referencedDeclaration": 407, + "type": "bytes memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 476, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 504, + "name": "Identifier", + "src": "3062:10:1" + } + ], + "id": 505, + "name": "MemberAccess", + "src": "3062:18:1" + } + ], + "id": 506, + "name": "FunctionCall", + "src": "3050:31:1" + } + ], + "id": 507, + "name": "ExpressionStatement", + "src": "3050:31:1" + } + ], + "id": 508, + "name": "Block", + "src": "3036:56:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", + "typeString": "literal_string \"invalid VAA action\"" + } + ], + "overloadedDeclarations": [-19, -19], + "referencedDeclaration": -19, + "type": "function (string memory) pure", + "value": "revert" + }, + "id": 509, + "name": "Identifier", + "src": "3112:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "696e76616c69642056414120616374696f6e", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"invalid VAA action\"", + "value": "invalid VAA action" + }, + "id": 510, + "name": "Literal", + "src": "3119:20:1" + } + ], + "id": 511, + "name": "FunctionCall", + "src": "3112:28:1" + } + ], + "id": 512, + "name": "ExpressionStatement", + "src": "3112:28:1" + } + ], + "id": 513, + "name": "Block", + "src": "3098:53:1" + } + ], + "id": 514, + "name": "IfStatement", + "src": "3005:146:1" + } + ], + "id": 515, + "name": "IfStatement", + "src": "2768:383:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 420, + "type": "mapping(bytes32 => bool)", + "value": "consumedVAAs" + }, + "id": 516, + "name": "Identifier", + "src": "3196:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "hash", + "referencedDeclaration": 399, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 476, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 517, + "name": "Identifier", + "src": "3209:10:1" + } + ], + "id": 518, + "name": "MemberAccess", + "src": "3209:15:1" + } + ], + "id": 519, + "name": "IndexAccess", + "src": "3196:29:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 520, + "name": "Literal", + "src": "3228:4:1" + } + ], + "id": 521, + "name": "Assignment", + "src": "3196:36:1" + } + ], + "id": 522, + "name": "ExpressionStatement", + "src": "3196:36:1" + } + ], + "id": 523, + "name": "Block", + "src": "2673:566:1" + } + ], + "id": 524, + "name": "FunctionDefinition", + "src": "2600:639:1" + }, + { + "attributes": { + "documentation": null, + "functionSelector": "600b9aa6", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "parseAndVerifyVAA", + "overrides": null, + "scope": 1420, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "vaa", + "overrides": null, + "scope": 781, + "stateVariable": false, + "storageLocation": "calldata", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 525, + "name": "ElementaryTypeName", + "src": "3472:5:1" + } + ], + "id": 526, + "name": "VariableDeclaration", + "src": "3472:18:1" + } + ], + "id": 527, + "name": "ParameterList", + "src": "3471:20:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "parsed_vaa", + "overrides": null, + "scope": 781, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct Wormhole.ParsedVAA", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ParsedVAA", + "referencedDeclaration": 408, + "type": "struct Wormhole.ParsedVAA" + }, + "id": 528, + "name": "UserDefinedTypeName", + "src": "3513:9:1" + } + ], + "id": 529, + "name": "VariableDeclaration", + "src": "3513:27:1" + } + ], + "id": 530, + "name": "ParameterList", + "src": "3512:29:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "version", + "referencedDeclaration": 397, + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 531, + "name": "Identifier", + "src": "3552:10:1" + } + ], + "id": 533, + "name": "MemberAccess", + "src": "3552:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 534, + "name": "Identifier", + "src": "3573:3:1" + } + ], + "id": 535, + "name": "MemberAccess", + "src": "3573:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 536, + "name": "Literal", + "src": "3585:1:1" + } + ], + "id": 537, + "name": "FunctionCall", + "src": "3573:14:1" + } + ], + "id": 538, + "name": "Assignment", + "src": "3552:35:1" + } + ], + "id": 539, + "name": "ExpressionStatement", + "src": "3552:35:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", + "typeString": "literal_string \"VAA version incompatible\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 540, + "name": "Identifier", + "src": "3597:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "version", + "referencedDeclaration": 397, + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 541, + "name": "Identifier", + "src": "3605:10:1" + } + ], + "id": 542, + "name": "MemberAccess", + "src": "3605:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 543, + "name": "Literal", + "src": "3627:1:1" + } + ], + "id": 544, + "name": "BinaryOperation", + "src": "3605:23:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5641412076657273696f6e20696e636f6d70617469626c65", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"VAA version incompatible\"", + "value": "VAA version incompatible" + }, + "id": 545, + "name": "Literal", + "src": "3630:26:1" + } + ], + "id": 546, + "name": "FunctionCall", + "src": "3597:60:1" + } + ], + "id": 547, + "name": "ExpressionStatement", + "src": "3597:60:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "guardian_set_index", + "referencedDeclaration": 401, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 548, + "name": "Identifier", + "src": "3714:10:1" + } + ], + "id": 550, + "name": "MemberAccess", + "src": "3714:29:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint32", + "referencedDeclaration": 163, + "type": "function (bytes memory,uint256) pure returns (uint32)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 551, + "name": "Identifier", + "src": "3746:3:1" + } + ], + "id": 552, + "name": "MemberAccess", + "src": "3746:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 553, + "name": "Literal", + "src": "3759:1:1" + } + ], + "id": 554, + "name": "FunctionCall", + "src": "3746:15:1" + } + ], + "id": 555, + "name": "Assignment", + "src": "3714:47:1" + } + ], + "id": 556, + "name": "ExpressionStatement", + "src": "3714:47:1" + }, + { + "attributes": { + "assignments": [558] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "len_signers", + "overrides": null, + "scope": 780, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 557, + "name": "ElementaryTypeName", + "src": "3772:7:1" + } + ], + "id": 558, + "name": "VariableDeclaration", + "src": "3772:19:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 559, + "name": "Identifier", + "src": "3794:3:1" + } + ], + "id": 560, + "name": "MemberAccess", + "src": "3794:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "35", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 5", + "value": "5" + }, + "id": 561, + "name": "Literal", + "src": "3806:1:1" + } + ], + "id": 562, + "name": "FunctionCall", + "src": "3794:14:1" + } + ], + "id": 563, + "name": "VariableDeclarationStatement", + "src": "3772:36:1" + }, + { + "attributes": { + "assignments": [565] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "offset", + "overrides": null, + "scope": 780, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint", + "type": "uint256" + }, + "id": 564, + "name": "ElementaryTypeName", + "src": "3818:4:1" + } + ], + "id": 565, + "name": "VariableDeclaration", + "src": "3818:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "36", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 6", + "value": "6" + }, + "id": 566, + "name": "Literal", + "src": "3832:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3636", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 66", + "value": "66" + }, + "id": 567, + "name": "Literal", + "src": "3836:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 558, + "type": "uint256", + "value": "len_signers" + }, + "id": 568, + "name": "Identifier", + "src": "3841:11:1" + } + ], + "id": 569, + "name": "BinaryOperation", + "src": "3836:16:1" + } + ], + "id": 570, + "name": "BinaryOperation", + "src": "3832:20:1" + } + ], + "id": 571, + "name": "VariableDeclarationStatement", + "src": "3818:34:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "timestamp", + "referencedDeclaration": 403, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 572, + "name": "Identifier", + "src": "3897:10:1" + } + ], + "id": 574, + "name": "MemberAccess", + "src": "3897:20:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint32", + "referencedDeclaration": 163, + "type": "function (bytes memory,uint256) pure returns (uint32)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 575, + "name": "Identifier", + "src": "3920:3:1" + } + ], + "id": 576, + "name": "MemberAccess", + "src": "3920:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 565, + "type": "uint256", + "value": "offset" + }, + "id": 577, + "name": "Identifier", + "src": "3933:6:1" + } + ], + "id": 578, + "name": "FunctionCall", + "src": "3920:20:1" + } + ], + "id": 579, + "name": "Assignment", + "src": "3897:43:1" + } + ], + "id": 580, + "name": "ExpressionStatement", + "src": "3897:43:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "hash", + "referencedDeclaration": 399, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 581, + "name": "Identifier", + "src": "3976:10:1" + } + ], + "id": 583, + "name": "MemberAccess", + "src": "3976:15:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": -8, + "type": "function (bytes memory) pure returns (bytes32)", + "value": "keccak256" + }, + "id": 584, + "name": "Identifier", + "src": "3994:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "slice", + "referencedDeclaration": 55, + "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 585, + "name": "Identifier", + "src": "4004:3:1" + } + ], + "id": 586, + "name": "MemberAccess", + "src": "4004:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 565, + "type": "uint256", + "value": "offset" + }, + "id": 587, + "name": "Identifier", + "src": "4014:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 588, + "name": "Identifier", + "src": "4022:3:1" + } + ], + "id": 589, + "name": "MemberAccess", + "src": "4022:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 565, + "type": "uint256", + "value": "offset" + }, + "id": 590, + "name": "Identifier", + "src": "4035:6:1" + } + ], + "id": 591, + "name": "BinaryOperation", + "src": "4022:19:1" + } + ], + "id": 592, + "name": "FunctionCall", + "src": "4004:38:1" + } + ], + "id": 593, + "name": "FunctionCall", + "src": "3994:49:1" + } + ], + "id": 594, + "name": "Assignment", + "src": "3976:67:1" + } + ], + "id": 595, + "name": "ExpressionStatement", + "src": "3976:67:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", + "typeString": "literal_string \"VAA was already executed\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 596, + "name": "Identifier", + "src": "4053:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 420, + "type": "mapping(bytes32 => bool)", + "value": "consumedVAAs" + }, + "id": 597, + "name": "Identifier", + "src": "4062:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "hash", + "referencedDeclaration": 399, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 598, + "name": "Identifier", + "src": "4075:10:1" + } + ], + "id": 599, + "name": "MemberAccess", + "src": "4075:15:1" + } + ], + "id": 600, + "name": "IndexAccess", + "src": "4062:29:1" + } + ], + "id": 601, + "name": "UnaryOperation", + "src": "4061:30:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5641412077617320616c7265616479206578656375746564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"VAA was already executed\"", + "value": "VAA was already executed" + }, + "id": 602, + "name": "Literal", + "src": "4093:26:1" + } + ], + "id": 603, + "name": "FunctionCall", + "src": "4053:67:1" + } + ], + "id": 604, + "name": "ExpressionStatement", + "src": "4053:67:1" + }, + { + "attributes": { + "assignments": [606] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "guardian_set", + "overrides": null, + "scope": 780, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct Wormhole.GuardianSet", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "GuardianSet", + "referencedDeclaration": 371, + "type": "struct Wormhole.GuardianSet" + }, + "id": 605, + "name": "UserDefinedTypeName", + "src": "4131:11:1" + } + ], + "id": 606, + "name": "VariableDeclaration", + "src": "4131:31:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct Wormhole.GuardianSet storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 412, + "type": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)", + "value": "guardian_sets" + }, + "id": 607, + "name": "Identifier", + "src": "4165:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "guardian_set_index", + "referencedDeclaration": 401, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 608, + "name": "Identifier", + "src": "4179:10:1" + } + ], + "id": 609, + "name": "MemberAccess", + "src": "4179:29:1" + } + ], + "id": 610, + "name": "IndexAccess", + "src": "4165:44:1" + } + ], + "id": 611, + "name": "VariableDeclarationStatement", + "src": "4131:78:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ef4d0f2354b2279f26c4ba4477a0c338dcdd31fbb9caa6ef52ec7856b55556f3", + "typeString": "literal_string \"invalid guardian set\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 612, + "name": "Identifier", + "src": "4219:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "keys", + "referencedDeclaration": 368, + "type": "address[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 606, + "type": "struct Wormhole.GuardianSet memory", + "value": "guardian_set" + }, + "id": 613, + "name": "Identifier", + "src": "4227:12:1" + } + ], + "id": 614, + "name": "MemberAccess", + "src": "4227:17:1" + } + ], + "id": 615, + "name": "MemberAccess", + "src": "4227:24:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 616, + "name": "Literal", + "src": "4254:1:1" + } + ], + "id": 617, + "name": "BinaryOperation", + "src": "4227:28:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "696e76616c696420677561726469616e20736574", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"invalid guardian set\"", + "value": "invalid guardian set" + }, + "id": 618, + "name": "Literal", + "src": "4257:22:1" + } + ], + "id": 619, + "name": "FunctionCall", + "src": "4219:61:1" + } + ], + "id": 620, + "name": "ExpressionStatement", + "src": "4219:61:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", + "typeString": "literal_string \"guardian set has expired\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 621, + "name": "Identifier", + "src": "4290:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "expiration_time", + "referencedDeclaration": 370, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 606, + "type": "struct Wormhole.GuardianSet memory", + "value": "guardian_set" + }, + "id": 622, + "name": "Identifier", + "src": "4298:12:1" + } + ], + "id": 623, + "name": "MemberAccess", + "src": "4298:28:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 624, + "name": "Literal", + "src": "4330:1:1" + } + ], + "id": 625, + "name": "BinaryOperation", + "src": "4298:33:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "expiration_time", + "referencedDeclaration": 370, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 606, + "type": "struct Wormhole.GuardianSet memory", + "value": "guardian_set" + }, + "id": 626, + "name": "Identifier", + "src": "4335:12:1" + } + ], + "id": 627, + "name": "MemberAccess", + "src": "4335:28:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -4, + "type": "block", + "value": "block" + }, + "id": 628, + "name": "Identifier", + "src": "4366:5:1" + } + ], + "id": 629, + "name": "MemberAccess", + "src": "4366:15:1" + } + ], + "id": 630, + "name": "BinaryOperation", + "src": "4335:46:1" + } + ], + "id": 631, + "name": "BinaryOperation", + "src": "4298:83:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "677561726469616e20736574206861732065787069726564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"guardian set has expired\"", + "value": "guardian set has expired" + }, + "id": 632, + "name": "Literal", + "src": "4383:26:1" + } + ], + "id": 633, + "name": "FunctionCall", + "src": "4290:120:1" + } + ], + "id": 634, + "name": "ExpressionStatement", + "src": "4290:120:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", + "typeString": "literal_string \"no quorum\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 635, + "name": "Identifier", + "src": "4517:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "keys", + "referencedDeclaration": 368, + "type": "address[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 606, + "type": "struct Wormhole.GuardianSet memory", + "value": "guardian_set" + }, + "id": 636, + "name": "Identifier", + "src": "4527:12:1" + } + ], + "id": 637, + "name": "MemberAccess", + "src": "4527:17:1" + } + ], + "id": 638, + "name": "MemberAccess", + "src": "4527:24:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 639, + "name": "Literal", + "src": "4554:2:1" + } + ], + "id": 640, + "name": "BinaryOperation", + "src": "4527:29:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "33", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 3", + "value": "3" + }, + "id": 641, + "name": "Literal", + "src": "4559:1:1" + } + ], + "id": 642, + "name": "BinaryOperation", + "src": "4527:33:1" + } + ], + "id": 643, + "name": "TupleExpression", + "src": "4526:35:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "32", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 2", + "value": "2" + }, + "id": 644, + "name": "Literal", + "src": "4564:1:1" + } + ], + "id": 645, + "name": "BinaryOperation", + "src": "4526:39:1" + } + ], + "id": 646, + "name": "TupleExpression", + "src": "4525:41:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 647, + "name": "Literal", + "src": "4569:2:1" + } + ], + "id": 648, + "name": "BinaryOperation", + "src": "4525:46:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 649, + "name": "Literal", + "src": "4574:1:1" + } + ], + "id": 650, + "name": "BinaryOperation", + "src": "4525:50:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 558, + "type": "uint256", + "value": "len_signers" + }, + "id": 651, + "name": "Identifier", + "src": "4579:11:1" + } + ], + "id": 652, + "name": "BinaryOperation", + "src": "4525:65:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "6e6f2071756f72756d", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"no quorum\"", + "value": "no quorum" + }, + "id": 653, + "name": "Literal", + "src": "4592:11:1" + } + ], + "id": 654, + "name": "FunctionCall", + "src": "4517:87:1" + } + ], + "id": 655, + "name": "ExpressionStatement", + "src": "4517:87:1" + }, + { + "attributes": { + "assignments": [657] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "last_index", + "overrides": null, + "scope": 780, + "stateVariable": false, + "storageLocation": "default", + "type": "int16", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "int16", + "type": "int16" + }, + "id": 656, + "name": "ElementaryTypeName", + "src": "4615:5:1" + } + ], + "id": 657, + "name": "VariableDeclaration", + "src": "4615:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "operator": "-", + "prefix": true, + "type": "int_const -1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 658, + "name": "Literal", + "src": "4636:1:1" + } + ], + "id": 659, + "name": "UnaryOperation", + "src": "4634:3:1" + } + ], + "id": 660, + "name": "VariableDeclarationStatement", + "src": "4615:22:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [662] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "i", + "overrides": null, + "scope": 750, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint", + "type": "uint256" + }, + "id": 661, + "name": "ElementaryTypeName", + "src": "4652:4:1" + } + ], + "id": 662, + "name": "VariableDeclaration", + "src": "4652:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 663, + "name": "Literal", + "src": "4661:1:1" + } + ], + "id": 664, + "name": "VariableDeclarationStatement", + "src": "4652:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 662, + "type": "uint256", + "value": "i" + }, + "id": 665, + "name": "Identifier", + "src": "4664:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 558, + "type": "uint256", + "value": "len_signers" + }, + "id": 666, + "name": "Identifier", + "src": "4668:11:1" + } + ], + "id": 667, + "name": "BinaryOperation", + "src": "4664:15:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "++", + "prefix": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 662, + "type": "uint256", + "value": "i" + }, + "id": 668, + "name": "Identifier", + "src": "4681:1:1" + } + ], + "id": 669, + "name": "UnaryOperation", + "src": "4681:3:1" + } + ], + "id": 670, + "name": "ExpressionStatement", + "src": "4681:3:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [672] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "index", + "overrides": null, + "scope": 749, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 671, + "name": "ElementaryTypeName", + "src": "4700:5:1" + } + ], + "id": 672, + "name": "VariableDeclaration", + "src": "4700:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 673, + "name": "Identifier", + "src": "4714:3:1" + } + ], + "id": 674, + "name": "MemberAccess", + "src": "4714:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "36", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 6", + "value": "6" + }, + "id": 675, + "name": "Literal", + "src": "4726:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 662, + "type": "uint256", + "value": "i" + }, + "id": 676, + "name": "Identifier", + "src": "4730:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3636", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 66", + "value": "66" + }, + "id": 677, + "name": "Literal", + "src": "4734:2:1" + } + ], + "id": 678, + "name": "BinaryOperation", + "src": "4730:6:1" + } + ], + "id": 679, + "name": "BinaryOperation", + "src": "4726:10:1" + } + ], + "id": 680, + "name": "FunctionCall", + "src": "4714:23:1" + } + ], + "id": 681, + "name": "VariableDeclarationStatement", + "src": "4700:37:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_de9ff8e5647eeed7691d313f96ed0065761ad2da429d76b3b7868b564890def8", + "typeString": "literal_string \"signature indices must be ascending\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 682, + "name": "Identifier", + "src": "4751:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int16", + "typeString": "int16" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 672, + "type": "uint8", + "value": "index" + }, + "id": 683, + "name": "Identifier", + "src": "4759:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 657, + "type": "int16", + "value": "last_index" + }, + "id": 684, + "name": "Identifier", + "src": "4767:10:1" + } + ], + "id": 685, + "name": "BinaryOperation", + "src": "4759:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "7369676e617475726520696e6469636573206d75737420626520617363656e64696e67", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"signature indices must be ascending\"", + "value": "signature indices must be ascending" + }, + "id": 686, + "name": "Literal", + "src": "4779:37:1" + } + ], + "id": 687, + "name": "FunctionCall", + "src": "4751:66:1" + } + ], + "id": 688, + "name": "ExpressionStatement", + "src": "4751:66:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "int16" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 657, + "type": "int16", + "value": "last_index" + }, + "id": 689, + "name": "Identifier", + "src": "4831:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "int16", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(int16)" + }, + "children": [ + { + "attributes": { + "name": "int16", + "type": null + }, + "id": 690, + "name": "ElementaryTypeName", + "src": "4844:5:1" + } + ], + "id": 691, + "name": "ElementaryTypeNameExpression", + "src": "4844:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 672, + "type": "uint8", + "value": "index" + }, + "id": 692, + "name": "Identifier", + "src": "4850:5:1" + } + ], + "id": 693, + "name": "FunctionCall", + "src": "4844:12:1" + } + ], + "id": 694, + "name": "Assignment", + "src": "4831:25:1" + } + ], + "id": 695, + "name": "ExpressionStatement", + "src": "4831:25:1" + }, + { + "attributes": { + "assignments": [697] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "r", + "overrides": null, + "scope": 749, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 696, + "name": "ElementaryTypeName", + "src": "4871:7:1" + } + ], + "id": 697, + "name": "VariableDeclaration", + "src": "4871:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toBytes32", + "referencedDeclaration": 298, + "type": "function (bytes memory,uint256) pure returns (bytes32)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 698, + "name": "Identifier", + "src": "4883:3:1" + } + ], + "id": 699, + "name": "MemberAccess", + "src": "4883:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "37", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 7", + "value": "7" + }, + "id": 700, + "name": "Literal", + "src": "4897:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 662, + "type": "uint256", + "value": "i" + }, + "id": 701, + "name": "Identifier", + "src": "4901:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3636", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 66", + "value": "66" + }, + "id": 702, + "name": "Literal", + "src": "4905:2:1" + } + ], + "id": 703, + "name": "BinaryOperation", + "src": "4901:6:1" + } + ], + "id": 704, + "name": "BinaryOperation", + "src": "4897:10:1" + } + ], + "id": 705, + "name": "FunctionCall", + "src": "4883:25:1" + } + ], + "id": 706, + "name": "VariableDeclarationStatement", + "src": "4871:37:1" + }, + { + "attributes": { + "assignments": [708] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "s", + "overrides": null, + "scope": 749, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 707, + "name": "ElementaryTypeName", + "src": "4922:7:1" + } + ], + "id": 708, + "name": "VariableDeclaration", + "src": "4922:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toBytes32", + "referencedDeclaration": 298, + "type": "function (bytes memory,uint256) pure returns (bytes32)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 709, + "name": "Identifier", + "src": "4934:3:1" + } + ], + "id": 710, + "name": "MemberAccess", + "src": "4934:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3339", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 39", + "value": "39" + }, + "id": 711, + "name": "Literal", + "src": "4948:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 662, + "type": "uint256", + "value": "i" + }, + "id": 712, + "name": "Identifier", + "src": "4953:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3636", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 66", + "value": "66" + }, + "id": 713, + "name": "Literal", + "src": "4957:2:1" + } + ], + "id": 714, + "name": "BinaryOperation", + "src": "4953:6:1" + } + ], + "id": 715, + "name": "BinaryOperation", + "src": "4948:11:1" + } + ], + "id": 716, + "name": "FunctionCall", + "src": "4934:26:1" + } + ], + "id": 717, + "name": "VariableDeclarationStatement", + "src": "4922:38:1" + }, + { + "attributes": { + "assignments": [719] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "v", + "overrides": null, + "scope": 749, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 718, + "name": "ElementaryTypeName", + "src": "4974:5:1" + } + ], + "id": 719, + "name": "VariableDeclaration", + "src": "4974:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 720, + "name": "Identifier", + "src": "4984:3:1" + } + ], + "id": 721, + "name": "MemberAccess", + "src": "4984:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3731", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 71", + "value": "71" + }, + "id": 722, + "name": "Literal", + "src": "4996:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 662, + "type": "uint256", + "value": "i" + }, + "id": 723, + "name": "Identifier", + "src": "5001:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3636", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 66", + "value": "66" + }, + "id": 724, + "name": "Literal", + "src": "5005:2:1" + } + ], + "id": 725, + "name": "BinaryOperation", + "src": "5001:6:1" + } + ], + "id": 726, + "name": "BinaryOperation", + "src": "4996:11:1" + } + ], + "id": 727, + "name": "FunctionCall", + "src": "4984:24:1" + } + ], + "id": 728, + "name": "VariableDeclarationStatement", + "src": "4974:34:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 719, + "type": "uint8", + "value": "v" + }, + "id": 729, + "name": "Identifier", + "src": "5022:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3237", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 27", + "value": "27" + }, + "id": 730, + "name": "Literal", + "src": "5027:2:1" + } + ], + "id": 731, + "name": "Assignment", + "src": "5022:7:1" + } + ], + "id": 732, + "name": "ExpressionStatement", + "src": "5022:7:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", + "typeString": "literal_string \"VAA signature invalid\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 733, + "name": "Identifier", + "src": "5043:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": -6, + "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)", + "value": "ecrecover" + }, + "id": 734, + "name": "Identifier", + "src": "5051:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "hash", + "referencedDeclaration": 399, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 735, + "name": "Identifier", + "src": "5061:10:1" + } + ], + "id": 736, + "name": "MemberAccess", + "src": "5061:15:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 719, + "type": "uint8", + "value": "v" + }, + "id": 737, + "name": "Identifier", + "src": "5078:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 697, + "type": "bytes32", + "value": "r" + }, + "id": 738, + "name": "Identifier", + "src": "5081:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 708, + "type": "bytes32", + "value": "s" + }, + "id": 739, + "name": "Identifier", + "src": "5084:1:1" + } + ], + "id": 740, + "name": "FunctionCall", + "src": "5051:35:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "keys", + "referencedDeclaration": 368, + "type": "address[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 606, + "type": "struct Wormhole.GuardianSet memory", + "value": "guardian_set" + }, + "id": 741, + "name": "Identifier", + "src": "5090:12:1" + } + ], + "id": 742, + "name": "MemberAccess", + "src": "5090:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 672, + "type": "uint8", + "value": "index" + }, + "id": 743, + "name": "Identifier", + "src": "5108:5:1" + } + ], + "id": 744, + "name": "IndexAccess", + "src": "5090:24:1" + } + ], + "id": 745, + "name": "BinaryOperation", + "src": "5051:63:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "564141207369676e617475726520696e76616c6964", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"VAA signature invalid\"", + "value": "VAA signature invalid" + }, + "id": 746, + "name": "Literal", + "src": "5116:23:1" + } + ], + "id": 747, + "name": "FunctionCall", + "src": "5043:97:1" + } + ], + "id": 748, + "name": "ExpressionStatement", + "src": "5043:97:1" + } + ], + "id": 749, + "name": "Block", + "src": "4686:465:1" + } + ], + "id": 750, + "name": "ForStatement", + "src": "4647:504:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "action", + "referencedDeclaration": 405, + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 751, + "name": "Identifier", + "src": "5161:10:1" + } + ], + "id": 753, + "name": "MemberAccess", + "src": "5161:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 754, + "name": "Identifier", + "src": "5181:3:1" + } + ], + "id": 755, + "name": "MemberAccess", + "src": "5181:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 565, + "type": "uint256", + "value": "offset" + }, + "id": 756, + "name": "Identifier", + "src": "5193:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "34", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 4", + "value": "4" + }, + "id": 757, + "name": "Literal", + "src": "5202:1:1" + } + ], + "id": 758, + "name": "BinaryOperation", + "src": "5193:10:1" + } + ], + "id": 759, + "name": "FunctionCall", + "src": "5181:23:1" + } + ], + "id": 760, + "name": "Assignment", + "src": "5161:43:1" + } + ], + "id": 761, + "name": "ExpressionStatement", + "src": "5161:43:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "payload", + "referencedDeclaration": 407, + "type": "bytes memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 762, + "name": "Identifier", + "src": "5214:10:1" + } + ], + "id": 764, + "name": "MemberAccess", + "src": "5214:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "slice", + "referencedDeclaration": 55, + "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 765, + "name": "Identifier", + "src": "5235:3:1" + } + ], + "id": 766, + "name": "MemberAccess", + "src": "5235:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 565, + "type": "uint256", + "value": "offset" + }, + "id": 767, + "name": "Identifier", + "src": "5245:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "35", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 5", + "value": "5" + }, + "id": 768, + "name": "Literal", + "src": "5254:1:1" + } + ], + "id": 769, + "name": "BinaryOperation", + "src": "5245:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 770, + "name": "Identifier", + "src": "5257:3:1" + } + ], + "id": 771, + "name": "MemberAccess", + "src": "5257:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 565, + "type": "uint256", + "value": "offset" + }, + "id": 772, + "name": "Identifier", + "src": "5271:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "35", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 5", + "value": "5" + }, + "id": 773, + "name": "Literal", + "src": "5280:1:1" + } + ], + "id": 774, + "name": "BinaryOperation", + "src": "5271:10:1" + } + ], + "id": 775, + "name": "TupleExpression", + "src": "5270:12:1" + } + ], + "id": 776, + "name": "BinaryOperation", + "src": "5257:25:1" + } + ], + "id": 777, + "name": "FunctionCall", + "src": "5235:48:1" + } + ], + "id": 778, + "name": "Assignment", + "src": "5214:69:1" + } + ], + "id": 779, + "name": "ExpressionStatement", + "src": "5214:69:1" + } + ], + "id": 780, + "name": "Block", + "src": "3542:1748:1" + } + ], + "id": 781, + "name": "FunctionDefinition", + "src": "3445:1845:1" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "vaaUpdateGuardianSet", + "overrides": null, + "scope": 1420, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 889, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 782, + "name": "ElementaryTypeName", + "src": "5326:5:1" + } + ], + "id": 783, + "name": "VariableDeclaration", + "src": "5326:17:1" + } + ], + "id": 784, + "name": "ParameterList", + "src": "5325:19:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 785, + "name": "ParameterList", + "src": "5353:0:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [787] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "new_guardian_set_index", + "overrides": null, + "scope": 888, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 786, + "name": "ElementaryTypeName", + "src": "5363:6:1" + } + ], + "id": 787, + "name": "VariableDeclaration", + "src": "5363:29:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint32", + "referencedDeclaration": 163, + "type": "function (bytes memory,uint256) pure returns (uint32)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 783, + "type": "bytes memory", + "value": "data" + }, + "id": 788, + "name": "Identifier", + "src": "5395:4:1" + } + ], + "id": 789, + "name": "MemberAccess", + "src": "5395:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 790, + "name": "Literal", + "src": "5409:1:1" + } + ], + "id": 791, + "name": "FunctionCall", + "src": "5395:16:1" + } + ], + "id": 792, + "name": "VariableDeclarationStatement", + "src": "5363:48:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a9c35350c4790f34190b54478b12348e0cbd9c4c717b5d4a6ca5709d71c4f33d", + "typeString": "literal_string \"index must increase in steps of 1\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 793, + "name": "Identifier", + "src": "5421:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 787, + "type": "uint32", + "value": "new_guardian_set_index" + }, + "id": 794, + "name": "Identifier", + "src": "5429:22:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" + }, + "id": 795, + "name": "Identifier", + "src": "5455:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 796, + "name": "Literal", + "src": "5476:1:1" + } + ], + "id": 797, + "name": "BinaryOperation", + "src": "5455:22:1" + } + ], + "id": 798, + "name": "BinaryOperation", + "src": "5429:48:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "696e646578206d75737420696e63726561736520696e207374657073206f662031", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"index must increase in steps of 1\"", + "value": "index must increase in steps of 1" + }, + "id": 799, + "name": "Literal", + "src": "5479:35:1" + } + ], + "id": 800, + "name": "FunctionCall", + "src": "5421:94:1" + } + ], + "id": 801, + "name": "ExpressionStatement", + "src": "5421:94:1" + }, + { + "attributes": { + "assignments": [803] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "len", + "overrides": null, + "scope": 888, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 802, + "name": "ElementaryTypeName", + "src": "5525:5:1" + } + ], + "id": 803, + "name": "VariableDeclaration", + "src": "5525:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 783, + "type": "bytes memory", + "value": "data" + }, + "id": 804, + "name": "Identifier", + "src": "5537:4:1" + } + ], + "id": 805, + "name": "MemberAccess", + "src": "5537:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "34", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 4", + "value": "4" + }, + "id": 806, + "name": "Literal", + "src": "5550:1:1" + } + ], + "id": 807, + "name": "FunctionCall", + "src": "5537:15:1" + } + ], + "id": 808, + "name": "VariableDeclarationStatement", + "src": "5525:27:1" + }, + { + "attributes": { + "assignments": [813] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "new_guardians", + "overrides": null, + "scope": 888, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 811, + "name": "ElementaryTypeName", + "src": "5563:7:1" + } + ], + "id": 812, + "name": "ArrayTypeName", + "src": "5563:9:1" + } + ], + "id": 813, + "name": "VariableDeclaration", + "src": "5563:30:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address[] memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "function (uint256) pure returns (address[] memory)" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 814, + "name": "ElementaryTypeName", + "src": "5600:7:1" + } + ], + "id": 815, + "name": "ArrayTypeName", + "src": "5600:9:1" + } + ], + "id": 816, + "name": "NewExpression", + "src": "5596:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 803, + "type": "uint8", + "value": "len" + }, + "id": 817, + "name": "Identifier", + "src": "5610:3:1" + } + ], + "id": 818, + "name": "FunctionCall", + "src": "5596:18:1" + } + ], + "id": 819, + "name": "VariableDeclarationStatement", + "src": "5563:51:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [821] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "i", + "overrides": null, + "scope": 848, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint", + "type": "uint256" + }, + "id": 820, + "name": "ElementaryTypeName", + "src": "5629:4:1" + } + ], + "id": 821, + "name": "VariableDeclaration", + "src": "5629:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 822, + "name": "Literal", + "src": "5638:1:1" + } + ], + "id": 823, + "name": "VariableDeclarationStatement", + "src": "5629:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 821, + "type": "uint256", + "value": "i" + }, + "id": 824, + "name": "Identifier", + "src": "5641:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 803, + "type": "uint8", + "value": "len" + }, + "id": 825, + "name": "Identifier", + "src": "5645:3:1" + } + ], + "id": 826, + "name": "BinaryOperation", + "src": "5641:7:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "++", + "prefix": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 821, + "type": "uint256", + "value": "i" + }, + "id": 827, + "name": "Identifier", + "src": "5650:1:1" + } + ], + "id": 828, + "name": "UnaryOperation", + "src": "5650:3:1" + } + ], + "id": 829, + "name": "ExpressionStatement", + "src": "5650:3:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [831] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "addr", + "overrides": null, + "scope": 847, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 830, + "name": "ElementaryTypeName", + "src": "5669:7:1" + } + ], + "id": 831, + "name": "VariableDeclaration", + "src": "5669:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toAddress", + "referencedDeclaration": 82, + "type": "function (bytes memory,uint256) pure returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 783, + "type": "bytes memory", + "value": "data" + }, + "id": 832, + "name": "Identifier", + "src": "5684:4:1" + } + ], + "id": 833, + "name": "MemberAccess", + "src": "5684:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "35", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 5", + "value": "5" + }, + "id": 834, + "name": "Literal", + "src": "5699:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 821, + "type": "uint256", + "value": "i" + }, + "id": 835, + "name": "Identifier", + "src": "5703:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3230", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 20", + "value": "20" + }, + "id": 836, + "name": "Literal", + "src": "5707:2:1" + } + ], + "id": 837, + "name": "BinaryOperation", + "src": "5703:6:1" + } + ], + "id": 838, + "name": "BinaryOperation", + "src": "5699:10:1" + } + ], + "id": 839, + "name": "FunctionCall", + "src": "5684:26:1" + } + ], + "id": 840, + "name": "VariableDeclarationStatement", + "src": "5669:41:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 813, + "type": "address[] memory", + "value": "new_guardians" + }, + "id": 841, + "name": "Identifier", + "src": "5724:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 821, + "type": "uint256", + "value": "i" + }, + "id": 842, + "name": "Identifier", + "src": "5738:1:1" + } + ], + "id": 843, + "name": "IndexAccess", + "src": "5724:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 831, + "type": "address", + "value": "addr" + }, + "id": 844, + "name": "Identifier", + "src": "5743:4:1" + } + ], + "id": 845, + "name": "Assignment", + "src": "5724:23:1" + } + ], + "id": 846, + "name": "ExpressionStatement", + "src": "5724:23:1" + } + ], + "id": 847, + "name": "Block", + "src": "5655:103:1" + } + ], + "id": 848, + "name": "ForStatement", + "src": "5624:134:1" + }, + { + "attributes": { + "assignments": [850] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "old_guardian_set_index", + "overrides": null, + "scope": 888, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 849, + "name": "ElementaryTypeName", + "src": "5768:6:1" + } + ], + "id": 850, + "name": "VariableDeclaration", + "src": "5768:29:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" + }, + "id": 851, + "name": "Identifier", + "src": "5800:18:1" + } + ], + "id": 852, + "name": "VariableDeclarationStatement", + "src": "5768:50:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" + }, + "id": 853, + "name": "Identifier", + "src": "5828:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 787, + "type": "uint32", + "value": "new_guardian_set_index" + }, + "id": 854, + "name": "Identifier", + "src": "5849:22:1" + } + ], + "id": 855, + "name": "Assignment", + "src": "5828:43:1" + } + ], + "id": 856, + "name": "ExpressionStatement", + "src": "5828:43:1" + }, + { + "attributes": { + "assignments": [858] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "new_guardian_set", + "overrides": null, + "scope": 888, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct Wormhole.GuardianSet", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "GuardianSet", + "referencedDeclaration": 371, + "type": "struct Wormhole.GuardianSet" + }, + "id": 857, + "name": "UserDefinedTypeName", + "src": "5882:11:1" + } + ], + "id": 858, + "name": "VariableDeclaration", + "src": "5882:35:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": true, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "struct Wormhole.GuardianSet memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 371, + "type": "type(struct Wormhole.GuardianSet storage pointer)", + "value": "GuardianSet" + }, + "id": 859, + "name": "Identifier", + "src": "5920:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 813, + "type": "address[] memory", + "value": "new_guardians" + }, + "id": 860, + "name": "Identifier", + "src": "5932:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 861, + "name": "Literal", + "src": "5947:1:1" + } + ], + "id": 862, + "name": "FunctionCall", + "src": "5920:29:1" + } + ], + "id": 863, + "name": "VariableDeclarationStatement", + "src": "5882:67:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "struct Wormhole.GuardianSet storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "struct Wormhole.GuardianSet storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 412, + "type": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)", + "value": "guardian_sets" + }, + "id": 864, + "name": "Identifier", + "src": "5959:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" + }, + "id": 865, + "name": "Identifier", + "src": "5973:18:1" + } + ], + "id": 866, + "name": "IndexAccess", + "src": "5959:33:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 858, + "type": "struct Wormhole.GuardianSet memory", + "value": "new_guardian_set" + }, + "id": 867, + "name": "Identifier", + "src": "5995:16:1" + } + ], + "id": 868, + "name": "Assignment", + "src": "5959:52:1" + } + ], + "id": 869, + "name": "ExpressionStatement", + "src": "5959:52:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "expiration_time", + "referencedDeclaration": 370, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct Wormhole.GuardianSet storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 412, + "type": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)", + "value": "guardian_sets" + }, + "id": 870, + "name": "Identifier", + "src": "6021:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 850, + "type": "uint32", + "value": "old_guardian_set_index" + }, + "id": 871, + "name": "Identifier", + "src": "6035:22:1" + } + ], + "id": 872, + "name": "IndexAccess", + "src": "6021:37:1" + } + ], + "id": 873, + "name": "MemberAccess", + "src": "6021:53:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint32", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint32)" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": null + }, + "id": 874, + "name": "ElementaryTypeName", + "src": "6077:6:1" + } + ], + "id": 875, + "name": "ElementaryTypeNameExpression", + "src": "6077:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -4, + "type": "block", + "value": "block" + }, + "id": 876, + "name": "Identifier", + "src": "6084:5:1" + } + ], + "id": 877, + "name": "MemberAccess", + "src": "6084:15:1" + } + ], + "id": 878, + "name": "FunctionCall", + "src": "6077:23:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 416, + "type": "uint32", + "value": "guardian_set_expirity" + }, + "id": 879, + "name": "Identifier", + "src": "6103:21:1" + } + ], + "id": 880, + "name": "BinaryOperation", + "src": "6077:47:1" + } + ], + "id": 881, + "name": "Assignment", + "src": "6021:103:1" + } + ], + "id": 882, + "name": "ExpressionStatement", + "src": "6021:103:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 377, + "type": "function (uint32,uint32)", + "value": "LogGuardianSetChanged" + }, + "id": 883, + "name": "Identifier", + "src": "6140:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 850, + "type": "uint32", + "value": "old_guardian_set_index" + }, + "id": 884, + "name": "Identifier", + "src": "6162:22:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" + }, + "id": 885, + "name": "Identifier", + "src": "6186:18:1" + } + ], + "id": 886, + "name": "FunctionCall", + "src": "6140:65:1" + } + ], + "id": 887, + "name": "EmitStatement", + "src": "6135:70:1" + } + ], + "id": 888, + "name": "Block", + "src": "5353:859:1" + } + ], + "id": 889, + "name": "FunctionDefinition", + "src": "5296:916:1" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "vaaTransfer", + "overrides": null, + "scope": 1420, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 1051, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 890, + "name": "ElementaryTypeName", + "src": "6239:5:1" + } + ], + "id": 891, + "name": "VariableDeclaration", + "src": "6239:17:1" + } + ], + "id": 892, + "name": "ParameterList", + "src": "6238:19:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 893, + "name": "ParameterList", + "src": "6266:0:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [895] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "source_chain", + "overrides": null, + "scope": 1050, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 894, + "name": "ElementaryTypeName", + "src": "6319:5:1" + } + ], + "id": 895, + "name": "VariableDeclaration", + "src": "6319:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 896, + "name": "Identifier", + "src": "6340:4:1" + } + ], + "id": 897, + "name": "MemberAccess", + "src": "6340:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "34", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 4", + "value": "4" + }, + "id": 898, + "name": "Literal", + "src": "6353:1:1" + } + ], + "id": 899, + "name": "FunctionCall", + "src": "6340:15:1" + } + ], + "id": 900, + "name": "VariableDeclarationStatement", + "src": "6319:36:1" + }, + { + "attributes": { + "assignments": [902] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target_chain", + "overrides": null, + "scope": 1050, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 901, + "name": "ElementaryTypeName", + "src": "6366:5:1" + } + ], + "id": 902, + "name": "VariableDeclaration", + "src": "6366:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 903, + "name": "Identifier", + "src": "6387:4:1" + } + ], + "id": 904, + "name": "MemberAccess", + "src": "6387:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "35", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 5", + "value": "5" + }, + "id": 905, + "name": "Literal", + "src": "6400:1:1" + } + ], + "id": 906, + "name": "FunctionCall", + "src": "6387:15:1" + } + ], + "id": 907, + "name": "VariableDeclarationStatement", + "src": "6366:36:1" + }, + { + "attributes": { + "assignments": [909] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target_address", + "overrides": null, + "scope": 1050, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 908, + "name": "ElementaryTypeName", + "src": "6521:7:1" + } + ], + "id": 909, + "name": "VariableDeclaration", + "src": "6521:22:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_50_by_1", + "typeString": "int_const 50" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toAddress", + "referencedDeclaration": 82, + "type": "function (bytes memory,uint256) pure returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 910, + "name": "Identifier", + "src": "6546:4:1" + } + ], + "id": 911, + "name": "MemberAccess", + "src": "6546:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_50_by_1", + "typeString": "int_const 50" + }, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "operator": "+", + "type": "int_const 50" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3338", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 38", + "value": "38" + }, + "id": 912, + "name": "Literal", + "src": "6561:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3132", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 12", + "value": "12" + }, + "id": 913, + "name": "Literal", + "src": "6566:2:1" + } + ], + "id": 914, + "name": "BinaryOperation", + "src": "6561:7:1" + } + ], + "id": 915, + "name": "FunctionCall", + "src": "6546:23:1" + } + ], + "id": 916, + "name": "VariableDeclarationStatement", + "src": "6521:48:1" + }, + { + "attributes": { + "assignments": [918] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token_chain", + "overrides": null, + "scope": 1050, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 917, + "name": "ElementaryTypeName", + "src": "6580:5:1" + } + ], + "id": 918, + "name": "VariableDeclaration", + "src": "6580:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_70_by_1", + "typeString": "int_const 70" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 919, + "name": "Identifier", + "src": "6600:4:1" + } + ], + "id": 920, + "name": "MemberAccess", + "src": "6600:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3730", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 70", + "value": "70" + }, + "id": 921, + "name": "Literal", + "src": "6613:2:1" + } + ], + "id": 922, + "name": "FunctionCall", + "src": "6600:16:1" + } + ], + "id": 923, + "name": "VariableDeclarationStatement", + "src": "6580:36:1" + }, + { + "attributes": { + "assignments": [925] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 1050, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 924, + "name": "ElementaryTypeName", + "src": "6680:7:1" + } + ], + "id": 925, + "name": "VariableDeclaration", + "src": "6680:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_104_by_1", + "typeString": "int_const 104" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint256", + "referencedDeclaration": 271, + "type": "function (bytes memory,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 926, + "name": "Identifier", + "src": "6697:4:1" + } + ], + "id": 927, + "name": "MemberAccess", + "src": "6697:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "313034", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 104", + "value": "104" + }, + "id": 928, + "name": "Literal", + "src": "6712:3:1" + } + ], + "id": 929, + "name": "FunctionCall", + "src": "6697:19:1" + } + ], + "id": 930, + "name": "VariableDeclarationStatement", + "src": "6680:36:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", + "typeString": "literal_string \"same chain transfers are not supported\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 931, + "name": "Identifier", + "src": "6727:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 895, + "type": "uint8", + "value": "source_chain" + }, + "id": 932, + "name": "Identifier", + "src": "6735:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 902, + "type": "uint8", + "value": "target_chain" + }, + "id": 933, + "name": "Identifier", + "src": "6751:12:1" + } + ], + "id": 934, + "name": "BinaryOperation", + "src": "6735:28:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "73616d6520636861696e207472616e736665727320617265206e6f7420737570706f72746564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"same chain transfers are not supported\"", + "value": "same chain transfers are not supported" + }, + "id": 935, + "name": "Literal", + "src": "6765:40:1" + } + ], + "id": 936, + "name": "FunctionCall", + "src": "6727:79:1" + } + ], + "id": 937, + "name": "ExpressionStatement", + "src": "6727:79:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", + "typeString": "literal_string \"transfer must be incoming\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 938, + "name": "Identifier", + "src": "6816:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 902, + "type": "uint8", + "value": "target_chain" + }, + "id": 939, + "name": "Identifier", + "src": "6824:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 362, + "type": "uint8", + "value": "CHAIN_ID" + }, + "id": 940, + "name": "Identifier", + "src": "6840:8:1" + } + ], + "id": 941, + "name": "BinaryOperation", + "src": "6824:24:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "7472616e73666572206d75737420626520696e636f6d696e67", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"transfer must be incoming\"", + "value": "transfer must be incoming" + }, + "id": 942, + "name": "Literal", + "src": "6850:27:1" + } + ], + "id": 943, + "name": "FunctionCall", + "src": "6816:62:1" + } + ], + "id": 944, + "name": "ExpressionStatement", + "src": "6816:62:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 918, + "type": "uint8", + "value": "token_chain" + }, + "id": 945, + "name": "Identifier", + "src": "6893:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 362, + "type": "uint8", + "value": "CHAIN_ID" + }, + "id": 946, + "name": "Identifier", + "src": "6908:8:1" + } + ], + "id": 947, + "name": "BinaryOperation", + "src": "6893:23:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [949] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token_address", + "overrides": null, + "scope": 1003, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 948, + "name": "ElementaryTypeName", + "src": "6932:7:1" + } + ], + "id": 949, + "name": "VariableDeclaration", + "src": "6932:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_71_by_1", + "typeString": "int_const 71" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toBytes32", + "referencedDeclaration": 298, + "type": "function (bytes memory,uint256) pure returns (bytes32)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 950, + "name": "Identifier", + "src": "6956:4:1" + } + ], + "id": 951, + "name": "MemberAccess", + "src": "6956:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3731", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 71", + "value": "71" + }, + "id": 952, + "name": "Literal", + "src": "6971:2:1" + } + ], + "id": 953, + "name": "FunctionCall", + "src": "6956:18:1" + } + ], + "id": 954, + "name": "VariableDeclarationStatement", + "src": "6932:42:1" + }, + { + "attributes": { + "assignments": [956] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "asset_id", + "overrides": null, + "scope": 1003, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 955, + "name": "ElementaryTypeName", + "src": "6988:7:1" + } + ], + "id": 956, + "name": "VariableDeclaration", + "src": "6988:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": -8, + "type": "function (bytes memory) pure returns (bytes32)", + "value": "keccak256" + }, + "id": 957, + "name": "Identifier", + "src": "7007:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "encodePacked", + "referencedDeclaration": null, + "type": "function () pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -1, + "type": "abi", + "value": "abi" + }, + "id": 958, + "name": "Identifier", + "src": "7017:3:1" + } + ], + "id": 959, + "name": "MemberAccess", + "src": "7017:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 918, + "type": "uint8", + "value": "token_chain" + }, + "id": 960, + "name": "Identifier", + "src": "7034:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 949, + "type": "bytes32", + "value": "token_address" + }, + "id": 961, + "name": "Identifier", + "src": "7047:13:1" + } + ], + "id": 962, + "name": "FunctionCall", + "src": "7017:44:1" + } + ], + "id": 963, + "name": "FunctionCall", + "src": "7007:55:1" + } + ], + "id": 964, + "name": "VariableDeclarationStatement", + "src": "6988:74:1" + }, + { + "attributes": { + "assignments": [966] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "wrapped_asset", + "overrides": null, + "scope": 1003, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 965, + "name": "ElementaryTypeName", + "src": "7154:7:1" + } + ], + "id": 966, + "name": "VariableDeclaration", + "src": "7154:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 424, + "type": "mapping(bytes32 => address)", + "value": "wrappedAssets" + }, + "id": 967, + "name": "Identifier", + "src": "7178:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 956, + "type": "bytes32", + "value": "asset_id" + }, + "id": 968, + "name": "Identifier", + "src": "7192:8:1" + } + ], + "id": 969, + "name": "IndexAccess", + "src": "7178:23:1" + } + ], + "id": 970, + "name": "VariableDeclarationStatement", + "src": "7154:47:1" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 966, + "type": "address", + "value": "wrapped_asset" + }, + "id": 971, + "name": "Identifier", + "src": "7219:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 972, + "name": "ElementaryTypeName", + "src": "7236:7:1" + } + ], + "id": 973, + "name": "ElementaryTypeNameExpression", + "src": "7236:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 974, + "name": "Literal", + "src": "7244:1:1" + } + ], + "id": 975, + "name": "FunctionCall", + "src": "7236:10:1" + } + ], + "id": 976, + "name": "BinaryOperation", + "src": "7219:27:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [978] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "asset_decimals", + "overrides": null, + "scope": 993, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 977, + "name": "ElementaryTypeName", + "src": "7266:5:1" + } + ], + "id": 978, + "name": "VariableDeclaration", + "src": "7266:20:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_103_by_1", + "typeString": "int_const 103" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 979, + "name": "Identifier", + "src": "7289:4:1" + } + ], + "id": 980, + "name": "MemberAccess", + "src": "7289:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "313033", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 103", + "value": "103" + }, + "id": 981, + "name": "Literal", + "src": "7302:3:1" + } + ], + "id": 982, + "name": "FunctionCall", + "src": "7289:17:1" + } + ], + "id": 983, + "name": "VariableDeclarationStatement", + "src": "7266:40:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 966, + "type": "address", + "value": "wrapped_asset" + }, + "id": 984, + "name": "Identifier", + "src": "7324:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1094, + "type": "function (bytes32,uint8,bytes32,uint8) returns (address)", + "value": "deployWrappedAsset" + }, + "id": 985, + "name": "Identifier", + "src": "7340:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 956, + "type": "bytes32", + "value": "asset_id" + }, + "id": 986, + "name": "Identifier", + "src": "7359:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 918, + "type": "uint8", + "value": "token_chain" + }, + "id": 987, + "name": "Identifier", + "src": "7369:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 949, + "type": "bytes32", + "value": "token_address" + }, + "id": 988, + "name": "Identifier", + "src": "7382:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 978, + "type": "uint8", + "value": "asset_decimals" + }, + "id": 989, + "name": "Identifier", + "src": "7397:14:1" + } + ], + "id": 990, + "name": "FunctionCall", + "src": "7340:72:1" + } + ], + "id": 991, + "name": "Assignment", + "src": "7324:88:1" + } + ], + "id": 992, + "name": "ExpressionStatement", + "src": "7324:88:1" + } + ], + "id": 993, + "name": "Block", + "src": "7248:179:1" + } + ], + "id": 994, + "name": "IfStatement", + "src": "7215:212:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "mint", + "referencedDeclaration": 1511, + "type": "function (address,uint256) external" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract WrappedAsset", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2147, + "type": "type(contract WrappedAsset)", + "value": "WrappedAsset" + }, + "id": 995, + "name": "Identifier", + "src": "7441:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 966, + "type": "address", + "value": "wrapped_asset" + }, + "id": 996, + "name": "Identifier", + "src": "7454:13:1" + } + ], + "id": 997, + "name": "FunctionCall", + "src": "7441:27:1" + } + ], + "id": 998, + "name": "MemberAccess", + "src": "7441:32:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 909, + "type": "address", + "value": "target_address" + }, + "id": 999, + "name": "Identifier", + "src": "7474:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 925, + "type": "uint256", + "value": "amount" + }, + "id": 1000, + "name": "Identifier", + "src": "7490:6:1" + } + ], + "id": 1001, + "name": "FunctionCall", + "src": "7441:56:1" + } + ], + "id": 1002, + "name": "ExpressionStatement", + "src": "7441:56:1" + } + ], + "id": 1003, + "name": "Block", + "src": "6918:590:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [1005] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token_address", + "overrides": null, + "scope": 1048, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1004, + "name": "ElementaryTypeName", + "src": "7528:7:1" + } + ], + "id": 1005, + "name": "VariableDeclaration", + "src": "7528:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_83_by_1", + "typeString": "int_const 83" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toAddress", + "referencedDeclaration": 82, + "type": "function (bytes memory,uint256) pure returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 1006, + "name": "Identifier", + "src": "7552:4:1" + } + ], + "id": 1007, + "name": "MemberAccess", + "src": "7552:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_83_by_1", + "typeString": "int_const 83" + }, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "operator": "+", + "type": "int_const 83" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3731", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 71", + "value": "71" + }, + "id": 1008, + "name": "Literal", + "src": "7567:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3132", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 12", + "value": "12" + }, + "id": 1009, + "name": "Literal", + "src": "7572:2:1" + } + ], + "id": 1010, + "name": "BinaryOperation", + "src": "7567:7:1" + } + ], + "id": 1011, + "name": "FunctionCall", + "src": "7552:23:1" + } + ], + "id": 1012, + "name": "VariableDeclarationStatement", + "src": "7528:47:1" + }, + { + "attributes": { + "assignments": [1014] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "decimals", + "overrides": null, + "scope": 1048, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1013, + "name": "ElementaryTypeName", + "src": "7590:5:1" + } + ], + "id": 1014, + "name": "VariableDeclaration", + "src": "7590:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "decimals", + "referencedDeclaration": 2584, + "type": "function () view external returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract ERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3008, + "type": "type(contract ERC20)", + "value": "ERC20" + }, + "id": 1015, + "name": "Identifier", + "src": "7607:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1005, + "type": "address", + "value": "token_address" + }, + "id": 1016, + "name": "Identifier", + "src": "7613:13:1" + } + ], + "id": 1017, + "name": "FunctionCall", + "src": "7607:20:1" + } + ], + "id": 1018, + "name": "MemberAccess", + "src": "7607:29:1" + } + ], + "id": 1019, + "name": "FunctionCall", + "src": "7607:31:1" + } + ], + "id": 1020, + "name": "VariableDeclarationStatement", + "src": "7590:48:1" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1014, + "type": "uint8", + "value": "decimals" + }, + "id": 1021, + "name": "Identifier", + "src": "7727:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1022, + "name": "Literal", + "src": "7738:1:1" + } + ], + "id": 1023, + "name": "BinaryOperation", + "src": "7727:12:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 925, + "type": "uint256", + "value": "amount" + }, + "id": 1024, + "name": "Identifier", + "src": "7759:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "mul", + "referencedDeclaration": 2388, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 925, + "type": "uint256", + "value": "amount" + }, + "id": 1025, + "name": "Identifier", + "src": "7768:6:1" + } + ], + "id": 1026, + "name": "MemberAccess", + "src": "7768:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "**", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1027, + "name": "Literal", + "src": "7779:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1028, + "name": "ElementaryTypeName", + "src": "7785:7:1" + } + ], + "id": 1029, + "name": "ElementaryTypeNameExpression", + "src": "7785:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1014, + "type": "uint8", + "value": "decimals" + }, + "id": 1030, + "name": "Identifier", + "src": "7793:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1031, + "name": "Literal", + "src": "7804:1:1" + } + ], + "id": 1032, + "name": "BinaryOperation", + "src": "7793:12:1" + } + ], + "id": 1033, + "name": "FunctionCall", + "src": "7785:21:1" + } + ], + "id": 1034, + "name": "BinaryOperation", + "src": "7779:27:1" + } + ], + "id": 1035, + "name": "FunctionCall", + "src": "7768:39:1" + } + ], + "id": 1036, + "name": "Assignment", + "src": "7759:48:1" + } + ], + "id": 1037, + "name": "ExpressionStatement", + "src": "7759:48:1" + } + ], + "id": 1038, + "name": "Block", + "src": "7741:81:1" + } + ], + "id": 1039, + "name": "IfStatement", + "src": "7723:99:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "safeTransfer", + "referencedDeclaration": 3120, + "type": "function (contract IERC20,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract IERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3086, + "type": "type(contract IERC20)", + "value": "IERC20" + }, + "id": 1040, + "name": "Identifier", + "src": "7835:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1005, + "type": "address", + "value": "token_address" + }, + "id": 1041, + "name": "Identifier", + "src": "7842:13:1" + } + ], + "id": 1042, + "name": "FunctionCall", + "src": "7835:21:1" + } + ], + "id": 1043, + "name": "MemberAccess", + "src": "7835:34:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 909, + "type": "address", + "value": "target_address" + }, + "id": 1044, + "name": "Identifier", + "src": "7870:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 925, + "type": "uint256", + "value": "amount" + }, + "id": 1045, + "name": "Identifier", + "src": "7886:6:1" + } + ], + "id": 1046, + "name": "FunctionCall", + "src": "7835:58:1" + } + ], + "id": 1047, + "name": "ExpressionStatement", + "src": "7835:58:1" + } + ], + "id": 1048, + "name": "Block", + "src": "7514:390:1" + } + ], + "id": 1049, + "name": "IfStatement", + "src": "6889:1015:1" + } + ], + "id": 1050, + "name": "Block", + "src": "6266:1644:1" + } + ], + "id": 1051, + "name": "FunctionDefinition", + "src": "6218:1692:1" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "deployWrappedAsset", + "overrides": null, + "scope": 1420, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "seed", + "overrides": null, + "scope": 1094, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 1052, + "name": "ElementaryTypeName", + "src": "7944:7:1" + } + ], + "id": 1053, + "name": "VariableDeclaration", + "src": "7944:12:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token_chain", + "overrides": null, + "scope": 1094, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1054, + "name": "ElementaryTypeName", + "src": "7958:5:1" + } + ], + "id": 1055, + "name": "VariableDeclaration", + "src": "7958:17:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token_address", + "overrides": null, + "scope": 1094, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 1056, + "name": "ElementaryTypeName", + "src": "7977:7:1" + } + ], + "id": 1057, + "name": "VariableDeclaration", + "src": "7977:21:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "decimals", + "overrides": null, + "scope": 1094, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1058, + "name": "ElementaryTypeName", + "src": "8000:5:1" + } + ], + "id": 1059, + "name": "VariableDeclaration", + "src": "8000:14:1" + } + ], + "id": 1060, + "name": "ParameterList", + "src": "7943:72:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "asset", + "overrides": null, + "scope": 1094, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1061, + "name": "ElementaryTypeName", + "src": "8033:7:1" + } + ], + "id": 1062, + "name": "VariableDeclaration", + "src": "8033:13:1" + } + ], + "id": 1063, + "name": "ParameterList", + "src": "8032:15:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [1065] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "targetBytes", + "overrides": null, + "scope": 1093, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes20", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes20", + "type": "bytes20" + }, + "id": 1064, + "name": "ElementaryTypeName", + "src": "8225:7:1" + } + ], + "id": 1065, + "name": "VariableDeclaration", + "src": "8225:19:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bytes20)" + }, + "children": [ + { + "attributes": { + "name": "bytes20", + "type": null + }, + "id": 1066, + "name": "ElementaryTypeName", + "src": "8247:7:1" + } + ], + "id": 1067, + "name": "ElementaryTypeNameExpression", + "src": "8247:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 359, + "type": "address", + "value": "wrappedAssetMaster" + }, + "id": 1068, + "name": "Identifier", + "src": "8255:18:1" + } + ], + "id": 1069, + "name": "FunctionCall", + "src": "8247:27:1" + } + ], + "id": 1070, + "name": "VariableDeclarationStatement", + "src": "8225:49:1" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 1062, + "isOffset": false, + "isSlot": false, + "src": "8593:5:1", + "valueSize": 1 + }, + { + "declaration": 1053, + "isOffset": false, + "isSlot": false, + "src": "8626:4:1", + "valueSize": 1 + }, + { + "declaration": 1065, + "isOffset": false, + "isSlot": false, + "src": "8463:11:1", + "valueSize": 1 + } + ], + "operations": "{\n let clone := mload(0x40)\n mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(clone, 0x14), targetBytes)\n mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n asset := create2(0, clone, 0x37, seed)\n}" + }, + "children": [], + "id": 1071, + "name": "InlineAssembly", + "src": "8284:357:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "initialize", + "referencedDeclaration": 1490, + "type": "function (uint8,bytes32,uint8) external" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract WrappedAsset", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2147, + "type": "type(contract WrappedAsset)", + "value": "WrappedAsset" + }, + "id": 1072, + "name": "Identifier", + "src": "8679:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1062, + "type": "address", + "value": "asset" + }, + "id": 1073, + "name": "Identifier", + "src": "8692:5:1" + } + ], + "id": 1074, + "name": "FunctionCall", + "src": "8679:19:1" + } + ], + "id": 1075, + "name": "MemberAccess", + "src": "8679:30:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1055, + "type": "uint8", + "value": "token_chain" + }, + "id": 1076, + "name": "Identifier", + "src": "8710:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1057, + "type": "bytes32", + "value": "token_address" + }, + "id": 1077, + "name": "Identifier", + "src": "8723:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1059, + "type": "uint8", + "value": "decimals" + }, + "id": 1078, + "name": "Identifier", + "src": "8738:8:1" + } + ], + "id": 1079, + "name": "FunctionCall", + "src": "8679:68:1" + } + ], + "id": 1080, + "name": "ExpressionStatement", + "src": "8679:68:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 424, + "type": "mapping(bytes32 => address)", + "value": "wrappedAssets" + }, + "id": 1081, + "name": "Identifier", + "src": "8783:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1053, + "type": "bytes32", + "value": "seed" + }, + "id": 1082, + "name": "Identifier", + "src": "8797:4:1" + } + ], + "id": 1083, + "name": "IndexAccess", + "src": "8783:19:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1062, + "type": "address", + "value": "asset" + }, + "id": 1084, + "name": "Identifier", + "src": "8805:5:1" + } + ], + "id": 1085, + "name": "Assignment", + "src": "8783:27:1" + } + ], + "id": 1086, + "name": "ExpressionStatement", + "src": "8783:27:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 428, + "type": "mapping(address => bool)", + "value": "isWrappedAsset" + }, + "id": 1087, + "name": "Identifier", + "src": "8820:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1062, + "type": "address", + "value": "asset" + }, + "id": 1088, + "name": "Identifier", + "src": "8835:5:1" + } + ], + "id": 1089, + "name": "IndexAccess", + "src": "8820:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 1090, + "name": "Literal", + "src": "8844:4:1" + } + ], + "id": 1091, + "name": "Assignment", + "src": "8820:28:1" + } + ], + "id": 1092, + "name": "ExpressionStatement", + "src": "8820:28:1" + } + ], + "id": 1093, + "name": "Block", + "src": "8047:808:1" + } + ], + "id": 1094, + "name": "FunctionDefinition", + "src": "7916:939:1" + }, + { + "attributes": { + "documentation": null, + "functionSelector": "70713960", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "lockAssets", + "overrides": null, + "scope": 1420, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "asset", + "overrides": null, + "scope": 1314, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1095, + "name": "ElementaryTypeName", + "src": "8890:7:1" + } + ], + "id": 1096, + "name": "VariableDeclaration", + "src": "8890:13:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 1314, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1097, + "name": "ElementaryTypeName", + "src": "8913:7:1" + } + ], + "id": 1098, + "name": "VariableDeclaration", + "src": "8913:14:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 1314, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 1099, + "name": "ElementaryTypeName", + "src": "8937:7:1" + } + ], + "id": 1100, + "name": "VariableDeclaration", + "src": "8937:17:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target_chain", + "overrides": null, + "scope": 1314, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1101, + "name": "ElementaryTypeName", + "src": "8964:5:1" + } + ], + "id": 1102, + "name": "VariableDeclaration", + "src": "8964:18:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "nonce", + "overrides": null, + "scope": 1314, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 1103, + "name": "ElementaryTypeName", + "src": "8992:6:1" + } + ], + "id": 1104, + "name": "VariableDeclaration", + "src": "8992:12:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "refund_dust", + "overrides": null, + "scope": 1314, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 1105, + "name": "ElementaryTypeName", + "src": "9014:4:1" + } + ], + "id": 1106, + "name": "VariableDeclaration", + "src": "9014:16:1" + } + ], + "id": 1107, + "name": "ParameterList", + "src": "8880:156:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1110, + "name": "ParameterList", + "src": "9057:0:1" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3657, + "type": "modifier ()", + "value": "nonReentrant" + }, + "id": 1108, + "name": "Identifier", + "src": "9044:12:1" + } + ], + "id": 1109, + "name": "ModifierInvocation", + "src": "9044:12:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_84da05290fceea4e386923ffe3e265c937087704025788355b73caadd151270b", + "typeString": "literal_string \"must not transfer to the same chain\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1111, + "name": "Identifier", + "src": "9067:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1102, + "type": "uint8", + "value": "target_chain" + }, + "id": 1112, + "name": "Identifier", + "src": "9075:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 362, + "type": "uint8", + "value": "CHAIN_ID" + }, + "id": 1113, + "name": "Identifier", + "src": "9091:8:1" + } + ], + "id": 1114, + "name": "BinaryOperation", + "src": "9075:24:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "6d757374206e6f74207472616e7366657220746f207468652073616d6520636861696e", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"must not transfer to the same chain\"", + "value": "must not transfer to the same chain" + }, + "id": 1115, + "name": "Literal", + "src": "9101:37:1" + } + ], + "id": 1116, + "name": "FunctionCall", + "src": "9067:72:1" + } + ], + "id": 1117, + "name": "ExpressionStatement", + "src": "9067:72:1" + }, + { + "attributes": { + "assignments": [1119] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "asset_chain", + "overrides": null, + "scope": 1313, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1118, + "name": "ElementaryTypeName", + "src": "9150:5:1" + } + ], + "id": 1119, + "name": "VariableDeclaration", + "src": "9150:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 362, + "type": "uint8", + "value": "CHAIN_ID" + }, + "id": 1120, + "name": "Identifier", + "src": "9170:8:1" + } + ], + "id": 1121, + "name": "VariableDeclarationStatement", + "src": "9150:28:1" + }, + { + "attributes": { + "assignments": [1123], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "asset_address", + "overrides": null, + "scope": 1313, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 1122, + "name": "ElementaryTypeName", + "src": "9188:7:1" + } + ], + "id": 1123, + "name": "VariableDeclaration", + "src": "9188:21:1" + } + ], + "id": 1124, + "name": "VariableDeclarationStatement", + "src": "9188:21:1" + }, + { + "attributes": { + "assignments": [1126] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "decimals", + "overrides": null, + "scope": 1313, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1125, + "name": "ElementaryTypeName", + "src": "9219:5:1" + } + ], + "id": 1126, + "name": "VariableDeclaration", + "src": "9219:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "decimals", + "referencedDeclaration": 2584, + "type": "function () view external returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract ERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3008, + "type": "type(contract ERC20)", + "value": "ERC20" + }, + "id": 1127, + "name": "Identifier", + "src": "9236:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1128, + "name": "Identifier", + "src": "9242:5:1" + } + ], + "id": 1129, + "name": "FunctionCall", + "src": "9236:12:1" + } + ], + "id": 1130, + "name": "MemberAccess", + "src": "9236:21:1" + } + ], + "id": 1131, + "name": "FunctionCall", + "src": "9236:23:1" + } + ], + "id": 1132, + "name": "VariableDeclarationStatement", + "src": "9219:40:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 428, + "type": "mapping(address => bool)", + "value": "isWrappedAsset" + }, + "id": 1133, + "name": "Identifier", + "src": "9274:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1134, + "name": "Identifier", + "src": "9289:5:1" + } + ], + "id": 1135, + "name": "IndexAccess", + "src": "9274:21:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "burn", + "referencedDeclaration": 1532, + "type": "function (address,uint256) external" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract WrappedAsset", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2147, + "type": "type(contract WrappedAsset)", + "value": "WrappedAsset" + }, + "id": 1136, + "name": "Identifier", + "src": "9311:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1137, + "name": "Identifier", + "src": "9324:5:1" + } + ], + "id": 1138, + "name": "FunctionCall", + "src": "9311:19:1" + } + ], + "id": 1139, + "name": "MemberAccess", + "src": "9311:24:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1140, + "name": "Identifier", + "src": "9336:3:1" + } + ], + "id": 1141, + "name": "MemberAccess", + "src": "9336:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1142, + "name": "Identifier", + "src": "9348:6:1" + } + ], + "id": 1143, + "name": "FunctionCall", + "src": "9311:44:1" + } + ], + "id": 1144, + "name": "ExpressionStatement", + "src": "9311:44:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1119, + "type": "uint8", + "value": "asset_chain" + }, + "id": 1145, + "name": "Identifier", + "src": "9369:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "assetChain", + "referencedDeclaration": 1443, + "type": "function () view external returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract WrappedAsset", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 2147, + "type": "type(contract WrappedAsset)", + "value": "WrappedAsset" + }, + "id": 1146, + "name": "Identifier", + "src": "9383:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1147, + "name": "Identifier", + "src": "9396:5:1" + } + ], + "id": 1148, + "name": "FunctionCall", + "src": "9383:19:1" + } + ], + "id": 1149, + "name": "MemberAccess", + "src": "9383:30:1" + } + ], + "id": 1150, + "name": "FunctionCall", + "src": "9383:32:1" + } + ], + "id": 1151, + "name": "Assignment", + "src": "9369:46:1" + } + ], + "id": 1152, + "name": "ExpressionStatement", + "src": "9369:46:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1123, + "type": "bytes32", + "value": "asset_address" + }, + "id": 1153, + "name": "Identifier", + "src": "9429:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "assetAddress", + "referencedDeclaration": 1445, + "type": "function () view external returns (bytes32)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract WrappedAsset", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 2147, + "type": "type(contract WrappedAsset)", + "value": "WrappedAsset" + }, + "id": 1154, + "name": "Identifier", + "src": "9445:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1155, + "name": "Identifier", + "src": "9458:5:1" + } + ], + "id": 1156, + "name": "FunctionCall", + "src": "9445:19:1" + } + ], + "id": 1157, + "name": "MemberAccess", + "src": "9445:32:1" + } + ], + "id": 1158, + "name": "FunctionCall", + "src": "9445:34:1" + } + ], + "id": 1159, + "name": "Assignment", + "src": "9429:50:1" + } + ], + "id": 1160, + "name": "ExpressionStatement", + "src": "9429:50:1" + } + ], + "id": 1161, + "name": "Block", + "src": "9297:193:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [1163] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "balanceBefore", + "overrides": null, + "scope": 1286, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1162, + "name": "ElementaryTypeName", + "src": "9510:7:1" + } + ], + "id": 1163, + "name": "VariableDeclaration", + "src": "9510:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "balanceOf", + "referencedDeclaration": 3025, + "type": "function (address) view external returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract IERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3086, + "type": "type(contract IERC20)", + "value": "IERC20" + }, + "id": 1164, + "name": "Identifier", + "src": "9534:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1165, + "name": "Identifier", + "src": "9541:5:1" + } + ], + "id": 1166, + "name": "FunctionCall", + "src": "9534:13:1" + } + ], + "id": 1167, + "name": "MemberAccess", + "src": "9534:23:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 1168, + "name": "ElementaryTypeName", + "src": "9558:7:1" + } + ], + "id": 1169, + "name": "ElementaryTypeNameExpression", + "src": "9558:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -28, + "type": "contract Wormhole", + "value": "this" + }, + "id": 1170, + "name": "Identifier", + "src": "9566:4:1" + } + ], + "id": 1171, + "name": "FunctionCall", + "src": "9558:13:1" + } + ], + "id": 1172, + "name": "FunctionCall", + "src": "9534:38:1" + } + ], + "id": 1173, + "name": "VariableDeclarationStatement", + "src": "9510:62:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "safeTransferFrom", + "referencedDeclaration": 3145, + "type": "function (contract IERC20,address,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract IERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3086, + "type": "type(contract IERC20)", + "value": "IERC20" + }, + "id": 1174, + "name": "Identifier", + "src": "9586:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1175, + "name": "Identifier", + "src": "9593:5:1" + } + ], + "id": 1176, + "name": "FunctionCall", + "src": "9586:13:1" + } + ], + "id": 1177, + "name": "MemberAccess", + "src": "9586:30:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1178, + "name": "Identifier", + "src": "9617:3:1" + } + ], + "id": 1179, + "name": "MemberAccess", + "src": "9617:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 1180, + "name": "ElementaryTypeName", + "src": "9629:7:1" + } + ], + "id": 1181, + "name": "ElementaryTypeNameExpression", + "src": "9629:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -28, + "type": "contract Wormhole", + "value": "this" + }, + "id": 1182, + "name": "Identifier", + "src": "9637:4:1" + } + ], + "id": 1183, + "name": "FunctionCall", + "src": "9629:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1184, + "name": "Identifier", + "src": "9644:6:1" + } + ], + "id": 1185, + "name": "FunctionCall", + "src": "9586:65:1" + } + ], + "id": 1186, + "name": "ExpressionStatement", + "src": "9586:65:1" + }, + { + "attributes": { + "assignments": [1188] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "balanceAfter", + "overrides": null, + "scope": 1286, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1187, + "name": "ElementaryTypeName", + "src": "9665:7:1" + } + ], + "id": 1188, + "name": "VariableDeclaration", + "src": "9665:20:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "balanceOf", + "referencedDeclaration": 3025, + "type": "function (address) view external returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract IERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3086, + "type": "type(contract IERC20)", + "value": "IERC20" + }, + "id": 1189, + "name": "Identifier", + "src": "9688:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1190, + "name": "Identifier", + "src": "9695:5:1" + } + ], + "id": 1191, + "name": "FunctionCall", + "src": "9688:13:1" + } + ], + "id": 1192, + "name": "MemberAccess", + "src": "9688:23:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 1193, + "name": "ElementaryTypeName", + "src": "9712:7:1" + } + ], + "id": 1194, + "name": "ElementaryTypeNameExpression", + "src": "9712:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -28, + "type": "contract Wormhole", + "value": "this" + }, + "id": 1195, + "name": "Identifier", + "src": "9720:4:1" + } + ], + "id": 1196, + "name": "FunctionCall", + "src": "9712:13:1" + } + ], + "id": 1197, + "name": "FunctionCall", + "src": "9688:38:1" + } + ], + "id": 1198, + "name": "VariableDeclarationStatement", + "src": "9665:61:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1199, + "name": "Identifier", + "src": "9931:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 2354, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1188, + "type": "uint256", + "value": "balanceAfter" + }, + "id": 1200, + "name": "Identifier", + "src": "9940:12:1" + } + ], + "id": 1201, + "name": "MemberAccess", + "src": "9940:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1163, + "type": "uint256", + "value": "balanceBefore" + }, + "id": 1202, + "name": "Identifier", + "src": "9957:13:1" + } + ], + "id": 1203, + "name": "FunctionCall", + "src": "9940:31:1" + } + ], + "id": 1204, + "name": "Assignment", + "src": "9931:40:1" + } + ], + "id": 1205, + "name": "ExpressionStatement", + "src": "9931:40:1" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1126, + "type": "uint8", + "value": "decimals" + }, + "id": 1206, + "name": "Identifier", + "src": "10046:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1207, + "name": "Literal", + "src": "10057:1:1" + } + ], + "id": 1208, + "name": "BinaryOperation", + "src": "10046:12:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [1210] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "original_amount", + "overrides": null, + "scope": 1253, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1209, + "name": "ElementaryTypeName", + "src": "10078:7:1" + } + ], + "id": 1210, + "name": "VariableDeclaration", + "src": "10078:23:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1211, + "name": "Identifier", + "src": "10104:6:1" + } + ], + "id": 1212, + "name": "VariableDeclarationStatement", + "src": "10078:32:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1213, + "name": "Identifier", + "src": "10128:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "div", + "referencedDeclaration": 2410, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1214, + "name": "Identifier", + "src": "10137:6:1" + } + ], + "id": 1215, + "name": "MemberAccess", + "src": "10137:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "**", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1216, + "name": "Literal", + "src": "10148:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1217, + "name": "ElementaryTypeName", + "src": "10154:7:1" + } + ], + "id": 1218, + "name": "ElementaryTypeNameExpression", + "src": "10154:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1126, + "type": "uint8", + "value": "decimals" + }, + "id": 1219, + "name": "Identifier", + "src": "10162:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1220, + "name": "Literal", + "src": "10173:1:1" + } + ], + "id": 1221, + "name": "BinaryOperation", + "src": "10162:12:1" + } + ], + "id": 1222, + "name": "FunctionCall", + "src": "10154:21:1" + } + ], + "id": 1223, + "name": "BinaryOperation", + "src": "10148:27:1" + } + ], + "id": 1224, + "name": "FunctionCall", + "src": "10137:39:1" + } + ], + "id": 1225, + "name": "Assignment", + "src": "10128:48:1" + } + ], + "id": 1226, + "name": "ExpressionStatement", + "src": "10128:48:1" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1106, + "type": "bool", + "value": "refund_dust" + }, + "id": 1227, + "name": "Identifier", + "src": "10199:11:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "safeTransfer", + "referencedDeclaration": 3120, + "type": "function (contract IERC20,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract IERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 3086, + "type": "type(contract IERC20)", + "value": "IERC20" + }, + "id": 1228, + "name": "Identifier", + "src": "10234:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1229, + "name": "Identifier", + "src": "10241:5:1" + } + ], + "id": 1230, + "name": "FunctionCall", + "src": "10234:13:1" + } + ], + "id": 1231, + "name": "MemberAccess", + "src": "10234:26:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1232, + "name": "Identifier", + "src": "10261:3:1" + } + ], + "id": 1233, + "name": "MemberAccess", + "src": "10261:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "mod", + "referencedDeclaration": 2432, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1210, + "type": "uint256", + "value": "original_amount" + }, + "id": 1234, + "name": "Identifier", + "src": "10273:15:1" + } + ], + "id": 1235, + "name": "MemberAccess", + "src": "10273:19:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "**", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1236, + "name": "Literal", + "src": "10293:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1237, + "name": "ElementaryTypeName", + "src": "10299:7:1" + } + ], + "id": 1238, + "name": "ElementaryTypeNameExpression", + "src": "10299:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1126, + "type": "uint8", + "value": "decimals" + }, + "id": 1239, + "name": "Identifier", + "src": "10307:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1240, + "name": "Literal", + "src": "10318:1:1" + } + ], + "id": 1241, + "name": "BinaryOperation", + "src": "10307:12:1" + } + ], + "id": 1242, + "name": "FunctionCall", + "src": "10299:21:1" + } + ], + "id": 1243, + "name": "BinaryOperation", + "src": "10293:27:1" + } + ], + "id": 1244, + "name": "FunctionCall", + "src": "10273:48:1" + } + ], + "id": 1245, + "name": "FunctionCall", + "src": "10234:88:1" + } + ], + "id": 1246, + "name": "ExpressionStatement", + "src": "10234:88:1" + } + ], + "id": 1247, + "name": "Block", + "src": "10212:129:1" + } + ], + "id": 1248, + "name": "IfStatement", + "src": "10195:146:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1126, + "type": "uint8", + "value": "decimals" + }, + "id": 1249, + "name": "Identifier", + "src": "10359:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1250, + "name": "Literal", + "src": "10370:1:1" + } + ], + "id": 1251, + "name": "Assignment", + "src": "10359:12:1" + } + ], + "id": 1252, + "name": "ExpressionStatement", + "src": "10359:12:1" + } + ], + "id": 1253, + "name": "Block", + "src": "10060:326:1" + } + ], + "id": 1254, + "name": "IfStatement", + "src": "10042:344:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4", + "typeString": "literal_string \"bridge balance would exceed maximum\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1255, + "name": "Identifier", + "src": "10400:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "div", + "referencedDeclaration": 2410, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1188, + "type": "uint256", + "value": "balanceAfter" + }, + "id": 1256, + "name": "Identifier", + "src": "10408:12:1" + } + ], + "id": 1257, + "name": "MemberAccess", + "src": "10408:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "**", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1258, + "name": "Literal", + "src": "10425:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1259, + "name": "ElementaryTypeName", + "src": "10431:7:1" + } + ], + "id": 1260, + "name": "ElementaryTypeNameExpression", + "src": "10431:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "decimals", + "referencedDeclaration": 2584, + "type": "function () view external returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "tryCall": false, + "type": "contract ERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 3008, + "type": "type(contract ERC20)", + "value": "ERC20" + }, + "id": 1261, + "name": "Identifier", + "src": "10439:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1262, + "name": "Identifier", + "src": "10445:5:1" + } + ], + "id": 1263, + "name": "FunctionCall", + "src": "10439:12:1" + } + ], + "id": 1264, + "name": "MemberAccess", + "src": "10439:21:1" + } + ], + "id": 1265, + "name": "FunctionCall", + "src": "10439:23:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1266, + "name": "Literal", + "src": "10465:1:1" + } + ], + "id": 1267, + "name": "BinaryOperation", + "src": "10439:27:1" + } + ], + "id": 1268, + "name": "FunctionCall", + "src": "10431:36:1" + } + ], + "id": 1269, + "name": "BinaryOperation", + "src": "10425:42:1" + } + ], + "id": 1270, + "name": "FunctionCall", + "src": "10408:60:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 357, + "type": "uint64", + "value": "MAX_UINT64" + }, + "id": 1271, + "name": "Identifier", + "src": "10472:10:1" + } + ], + "id": 1272, + "name": "BinaryOperation", + "src": "10408:74:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "6272696467652062616c616e636520776f756c6420657863656564206d6178696d756d", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"bridge balance would exceed maximum\"", + "value": "bridge balance would exceed maximum" + }, + "id": 1273, + "name": "Literal", + "src": "10484:37:1" + } + ], + "id": 1274, + "name": "FunctionCall", + "src": "10400:122:1" + } + ], + "id": 1275, + "name": "ExpressionStatement", + "src": "10400:122:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1123, + "type": "bytes32", + "value": "asset_address" + }, + "id": 1276, + "name": "Identifier", + "src": "10537:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bytes32)" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": null + }, + "id": 1277, + "name": "ElementaryTypeName", + "src": "10553:7:1" + } + ], + "id": 1278, + "name": "ElementaryTypeNameExpression", + "src": "10553:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1279, + "name": "ElementaryTypeName", + "src": "10561:7:1" + } + ], + "id": 1280, + "name": "ElementaryTypeNameExpression", + "src": "10561:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1281, + "name": "Identifier", + "src": "10569:5:1" + } + ], + "id": 1282, + "name": "FunctionCall", + "src": "10561:14:1" + } + ], + "id": 1283, + "name": "FunctionCall", + "src": "10553:23:1" + } + ], + "id": 1284, + "name": "Assignment", + "src": "10537:39:1" + } + ], + "id": 1285, + "name": "ExpressionStatement", + "src": "10537:39:1" + } + ], + "id": 1286, + "name": "Block", + "src": "9496:1091:1" + } + ], + "id": 1287, + "name": "IfStatement", + "src": "9270:1317:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91dc3b6ab9754748867317f89b73413ba314ee8a1acb42b6836d39d61d9e310e", + "typeString": "literal_string \"truncated amount must not be 0\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1288, + "name": "Identifier", + "src": "10636:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1289, + "name": "Identifier", + "src": "10644:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 1290, + "name": "Literal", + "src": "10654:1:1" + } + ], + "id": 1291, + "name": "BinaryOperation", + "src": "10644:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "7472756e636174656420616d6f756e74206d757374206e6f742062652030", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"truncated amount must not be 0\"", + "value": "truncated amount must not be 0" + }, + "id": 1292, + "name": "Literal", + "src": "10657:32:1" + } + ], + "id": 1293, + "name": "FunctionCall", + "src": "10636:54:1" + } + ], + "id": 1294, + "name": "ExpressionStatement", + "src": "10636:54:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 395, + "type": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)", + "value": "LogTokensLocked" + }, + "id": 1295, + "name": "Identifier", + "src": "10706:15:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1102, + "type": "uint8", + "value": "target_chain" + }, + "id": 1296, + "name": "Identifier", + "src": "10722:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1119, + "type": "uint8", + "value": "asset_chain" + }, + "id": 1297, + "name": "Identifier", + "src": "10736:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1126, + "type": "uint8", + "value": "decimals" + }, + "id": 1298, + "name": "Identifier", + "src": "10749:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1123, + "type": "bytes32", + "value": "asset_address" + }, + "id": 1299, + "name": "Identifier", + "src": "10759:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bytes32)" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": null + }, + "id": 1300, + "name": "ElementaryTypeName", + "src": "10774:7:1" + } + ], + "id": 1301, + "name": "ElementaryTypeNameExpression", + "src": "10774:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1302, + "name": "ElementaryTypeName", + "src": "10782:7:1" + } + ], + "id": 1303, + "name": "ElementaryTypeNameExpression", + "src": "10782:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1304, + "name": "Identifier", + "src": "10790:3:1" + } + ], + "id": 1305, + "name": "MemberAccess", + "src": "10790:10:1" + } + ], + "id": 1306, + "name": "FunctionCall", + "src": "10782:19:1" + } + ], + "id": 1307, + "name": "FunctionCall", + "src": "10774:28:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1100, + "type": "bytes32", + "value": "recipient" + }, + "id": 1308, + "name": "Identifier", + "src": "10804:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1309, + "name": "Identifier", + "src": "10815:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1104, + "type": "uint32", + "value": "nonce" + }, + "id": 1310, + "name": "Identifier", + "src": "10823:5:1" + } + ], + "id": 1311, + "name": "FunctionCall", + "src": "10706:123:1" + } + ], + "id": 1312, + "name": "EmitStatement", + "src": "10701:128:1" + } + ], + "id": 1313, + "name": "Block", + "src": "9057:1779:1" + } + ], + "id": 1314, + "name": "FunctionDefinition", + "src": "8861:1975:1" + }, + { + "attributes": { + "documentation": null, + "functionSelector": "58d62e46", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "lockETH", + "overrides": null, + "scope": 1420, + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 1403, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 1315, + "name": "ElementaryTypeName", + "src": "10868:7:1" + } + ], + "id": 1316, + "name": "VariableDeclaration", + "src": "10868:17:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target_chain", + "overrides": null, + "scope": 1403, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1317, + "name": "ElementaryTypeName", + "src": "10895:5:1" + } + ], + "id": 1318, + "name": "VariableDeclaration", + "src": "10895:18:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "nonce", + "overrides": null, + "scope": 1403, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 1319, + "name": "ElementaryTypeName", + "src": "10923:6:1" + } + ], + "id": 1320, + "name": "VariableDeclaration", + "src": "10923:12:1" + } + ], + "id": 1321, + "name": "ParameterList", + "src": "10858:83:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1324, + "name": "ParameterList", + "src": "10970:0:1" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3657, + "type": "modifier ()", + "value": "nonReentrant" + }, + "id": 1322, + "name": "Identifier", + "src": "10957:12:1" + } + ], + "id": 1323, + "name": "ModifierInvocation", + "src": "10957:12:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_84da05290fceea4e386923ffe3e265c937087704025788355b73caadd151270b", + "typeString": "literal_string \"must not transfer to the same chain\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1325, + "name": "Identifier", + "src": "10980:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1318, + "type": "uint8", + "value": "target_chain" + }, + "id": 1326, + "name": "Identifier", + "src": "10988:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 362, + "type": "uint8", + "value": "CHAIN_ID" + }, + "id": 1327, + "name": "Identifier", + "src": "11004:8:1" + } + ], + "id": 1328, + "name": "BinaryOperation", + "src": "10988:24:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "6d757374206e6f74207472616e7366657220746f207468652073616d6520636861696e", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"must not transfer to the same chain\"", + "value": "must not transfer to the same chain" + }, + "id": 1329, + "name": "Literal", + "src": "11014:37:1" + } + ], + "id": 1330, + "name": "FunctionCall", + "src": "10980:72:1" + } + ], + "id": 1331, + "name": "ExpressionStatement", + "src": "10980:72:1" + }, + { + "attributes": { + "assignments": [1333] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "remainder", + "overrides": null, + "scope": 1402, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1332, + "name": "ElementaryTypeName", + "src": "11063:7:1" + } + ], + "id": 1333, + "name": "VariableDeclaration", + "src": "11063:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "mod", + "referencedDeclaration": 2432, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "value", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1334, + "name": "Identifier", + "src": "11083:3:1" + } + ], + "id": 1335, + "name": "MemberAccess", + "src": "11083:9:1" + } + ], + "id": 1336, + "name": "MemberAccess", + "src": "11083:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + }, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "operator": "**", + "type": "int_const 1000000000" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1337, + "name": "Literal", + "src": "11097:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1338, + "name": "Literal", + "src": "11103:1:1" + } + ], + "id": 1339, + "name": "BinaryOperation", + "src": "11097:7:1" + } + ], + "id": 1340, + "name": "FunctionCall", + "src": "11083:22:1" + } + ], + "id": 1341, + "name": "VariableDeclarationStatement", + "src": "11063:42:1" + }, + { + "attributes": { + "assignments": [1343] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "transfer_amount", + "overrides": null, + "scope": 1402, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1342, + "name": "ElementaryTypeName", + "src": "11115:7:1" + } + ], + "id": 1343, + "name": "VariableDeclaration", + "src": "11115:23:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "div", + "referencedDeclaration": 2410, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "value", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1344, + "name": "Identifier", + "src": "11141:3:1" + } + ], + "id": 1345, + "name": "MemberAccess", + "src": "11141:9:1" + } + ], + "id": 1346, + "name": "MemberAccess", + "src": "11141:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + }, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "operator": "**", + "type": "int_const 1000000000" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1347, + "name": "Literal", + "src": "11155:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1348, + "name": "Literal", + "src": "11161:1:1" + } + ], + "id": 1349, + "name": "BinaryOperation", + "src": "11155:7:1" + } + ], + "id": 1350, + "name": "FunctionCall", + "src": "11141:22:1" + } + ], + "id": 1351, + "name": "VariableDeclarationStatement", + "src": "11115:48:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91dc3b6ab9754748867317f89b73413ba314ee8a1acb42b6836d39d61d9e310e", + "typeString": "literal_string \"truncated amount must not be 0\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1352, + "name": "Identifier", + "src": "11173:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1343, + "type": "uint256", + "value": "transfer_amount" + }, + "id": 1353, + "name": "Identifier", + "src": "11181:15:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 1354, + "name": "Literal", + "src": "11200:1:1" + } + ], + "id": 1355, + "name": "BinaryOperation", + "src": "11181:20:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "7472756e636174656420616d6f756e74206d757374206e6f742062652030", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"truncated amount must not be 0\"", + "value": "truncated amount must not be 0" + }, + "id": 1356, + "name": "Literal", + "src": "11203:32:1" + } + ], + "id": 1357, + "name": "FunctionCall", + "src": "11173:63:1" + } + ], + "id": 1358, + "name": "ExpressionStatement", + "src": "11173:63:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "transfer", + "referencedDeclaration": null, + "type": "function (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1359, + "name": "Identifier", + "src": "11282:3:1" + } + ], + "id": 1362, + "name": "MemberAccess", + "src": "11282:10:1" + } + ], + "id": 1363, + "name": "MemberAccess", + "src": "11282:19:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1333, + "type": "uint256", + "value": "remainder" + }, + "id": 1364, + "name": "Identifier", + "src": "11302:9:1" + } + ], + "id": 1365, + "name": "FunctionCall", + "src": "11282:30:1" + } + ], + "id": 1366, + "name": "ExpressionStatement", + "src": "11282:30:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": ["value"], + "type": "function () payable external" + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "deposit", + "referencedDeclaration": 1425, + "type": "function () payable external" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract WETH", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1431, + "type": "type(contract WETH)", + "value": "WETH" + }, + "id": 1367, + "name": "Identifier", + "src": "11356:4:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 365, + "type": "address", + "value": "WETHAddress" + }, + "id": 1368, + "name": "Identifier", + "src": "11361:11:1" + } + ], + "id": 1369, + "name": "FunctionCall", + "src": "11356:17:1" + } + ], + "id": 1370, + "name": "MemberAccess", + "src": "11356:25:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "value", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1371, + "name": "Identifier", + "src": "11390:3:1" + } + ], + "id": 1372, + "name": "MemberAccess", + "src": "11390:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1333, + "type": "uint256", + "value": "remainder" + }, + "id": 1373, + "name": "Identifier", + "src": "11402:9:1" + } + ], + "id": 1374, + "name": "BinaryOperation", + "src": "11390:21:1" + } + ], + "id": 1375, + "name": "FunctionCallOptions", + "src": "11356:56:1" + } + ], + "id": 1376, + "name": "FunctionCall", + "src": "11356:58:1" + } + ], + "id": 1377, + "name": "ExpressionStatement", + "src": "11356:58:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 395, + "type": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)", + "value": "LogTokensLocked" + }, + "id": 1378, + "name": "Identifier", + "src": "11461:15:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1318, + "type": "uint8", + "value": "target_chain" + }, + "id": 1379, + "name": "Identifier", + "src": "11477:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 362, + "type": "uint8", + "value": "CHAIN_ID" + }, + "id": 1380, + "name": "Identifier", + "src": "11491:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1381, + "name": "Literal", + "src": "11501:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bytes32)" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": null + }, + "id": 1382, + "name": "ElementaryTypeName", + "src": "11504:7:1" + } + ], + "id": 1383, + "name": "ElementaryTypeNameExpression", + "src": "11504:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1384, + "name": "ElementaryTypeName", + "src": "11512:7:1" + } + ], + "id": 1385, + "name": "ElementaryTypeNameExpression", + "src": "11512:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 365, + "type": "address", + "value": "WETHAddress" + }, + "id": 1386, + "name": "Identifier", + "src": "11520:11:1" + } + ], + "id": 1387, + "name": "FunctionCall", + "src": "11512:20:1" + } + ], + "id": 1388, + "name": "FunctionCall", + "src": "11504:29:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bytes32)" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": null + }, + "id": 1389, + "name": "ElementaryTypeName", + "src": "11535:7:1" + } + ], + "id": 1390, + "name": "ElementaryTypeNameExpression", + "src": "11535:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1391, + "name": "ElementaryTypeName", + "src": "11543:7:1" + } + ], + "id": 1392, + "name": "ElementaryTypeNameExpression", + "src": "11543:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1393, + "name": "Identifier", + "src": "11551:3:1" + } + ], + "id": 1394, + "name": "MemberAccess", + "src": "11551:10:1" + } + ], + "id": 1395, + "name": "FunctionCall", + "src": "11543:19:1" + } + ], + "id": 1396, + "name": "FunctionCall", + "src": "11535:28:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1316, + "type": "bytes32", + "value": "recipient" + }, + "id": 1397, + "name": "Identifier", + "src": "11565:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1343, + "type": "uint256", + "value": "transfer_amount" + }, + "id": 1398, + "name": "Identifier", + "src": "11576:15:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1320, + "type": "uint32", + "value": "nonce" + }, + "id": 1399, + "name": "Identifier", + "src": "11593:5:1" + } + ], + "id": 1400, + "name": "FunctionCall", + "src": "11461:138:1" + } + ], + "id": 1401, + "name": "EmitStatement", + "src": "11456:143:1" + } + ], + "id": 1402, + "name": "Block", + "src": "10970:636:1" + } + ], + "id": 1403, + "name": "FunctionDefinition", + "src": "10842:764:1" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "fallback", + "modifiers": [null], + "name": "", + "overrides": null, + "scope": 1420, + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1404, + "name": "ParameterList", + "src": "11620:2:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1405, + "name": "ParameterList", + "src": "11640:0:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", + "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" + } + ], + "overloadedDeclarations": [-19, -19], + "referencedDeclaration": -19, + "type": "function (string memory) pure", + "value": "revert" + }, + "id": 1406, + "name": "Identifier", + "src": "11641:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"please use lockETH to transfer ETH to Solana\"", + "value": "please use lockETH to transfer ETH to Solana" + }, + "id": 1407, + "name": "Literal", + "src": "11648:46:1" + } + ], + "id": 1408, + "name": "FunctionCall", + "src": "11641:54:1" + } + ], + "id": 1409, + "name": "ExpressionStatement", + "src": "11641:54:1" + } + ], + "id": 1410, + "name": "Block", + "src": "11640:57:1" + } + ], + "id": 1411, + "name": "FunctionDefinition", + "src": "11612:85:1" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "receive", + "modifiers": [null], + "name": "", + "overrides": null, + "scope": 1420, + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1412, + "name": "ParameterList", + "src": "11710:2:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1413, + "name": "ParameterList", + "src": "11730:0:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", + "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" + } + ], + "overloadedDeclarations": [-19, -19], + "referencedDeclaration": -19, + "type": "function (string memory) pure", + "value": "revert" + }, + "id": 1414, + "name": "Identifier", + "src": "11731:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"please use lockETH to transfer ETH to Solana\"", + "value": "please use lockETH to transfer ETH to Solana" + }, + "id": 1415, + "name": "Literal", + "src": "11738:46:1" + } + ], + "id": 1416, + "name": "FunctionCall", + "src": "11731:54:1" + } + ], + "id": 1417, + "name": "ExpressionStatement", + "src": "11731:54:1" + } + ], + "id": 1418, + "name": "Block", + "src": "11730:57:1" + } + ], + "id": 1419, + "name": "FunctionDefinition", + "src": "11703:84:1" + } + ], + "id": 1420, + "name": "ContractDefinition", + "src": "463:11326:1" + }, + { + "attributes": { + "abstract": false, + "contractDependencies": [3086], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "linearizedBaseContracts": [1431, 3086], + "name": "WETH", + "scope": 1432 + }, + "children": [ + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IERC20", + "referencedDeclaration": 3086, + "type": "contract IERC20" + }, + "id": 1421, + "name": "UserDefinedTypeName", + "src": "11810:6:1" + } + ], + "id": 1422, + "name": "InheritanceSpecifier", + "src": "11810:6:1" + }, + { + "attributes": { + "body": null, + "documentation": null, + "functionSelector": "d0e30db0", + "implemented": false, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "deposit", + "overrides": null, + "scope": 1431, + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1423, + "name": "ParameterList", + "src": "11839:2:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1424, + "name": "ParameterList", + "src": "11858:0:1" + } + ], + "id": 1425, + "name": "FunctionDefinition", + "src": "11823:36:1" + }, + { + "attributes": { + "body": null, + "documentation": null, + "functionSelector": "2e1a7d4d", + "implemented": false, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "withdraw", + "overrides": null, + "scope": 1431, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 1430, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1426, + "name": "ElementaryTypeName", + "src": "11883:7:1" + } + ], + "id": 1427, + "name": "VariableDeclaration", + "src": "11883:14:1" + } + ], + "id": 1428, + "name": "ParameterList", + "src": "11882:16:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1429, + "name": "ParameterList", + "src": "11907:0:1" + } + ], + "id": 1430, + "name": "FunctionDefinition", + "src": "11865:43:1" + } + ], + "id": 1431, + "name": "ContractDefinition", + "src": "11792:118:1" + } + ], + "id": 1432, + "name": "SourceUnit", + "src": "64:11847:1" + }, + "compiler": { + "name": "solc", + "version": "0.6.12+commit.27d51765.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.3.4", + "updatedAt": "2021-04-12T21:53:29.871Z", + "devdoc": { + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the amount of tokens owned by `account`." + }, + "totalSupply()": { + "details": "Returns the amount of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + }, + "transferFrom(address,address,uint256)": { + "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} diff --git a/packages/bridge/contracts/Wormhole.json b/packages/bridge/contracts/Wormhole.json index a48b765..410f7b1 100644 --- a/packages/bridge/contracts/Wormhole.json +++ b/packages/bridge/contracts/Wormhole.json @@ -275,6 +275,57 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "vaa", + "type": "bytes" + } + ], + "name": "parseAndVerifyVAA", + "outputs": [ + { + "components": [ + { + "internalType": "uint8", + "name": "version", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "uint32", + "name": "guardian_set_index", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes", + "name": "payload", + "type": "bytes" + } + ], + "internalType": "struct Wormhole.ParsedVAA", + "name": "parsed_vaa", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -337,21 +388,21 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"keys\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"internalType\":\"struct Wormhole.GuardianSet\",\"name\":\"initial_guardian_set\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"wrapped_asset_master\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_guardian_set_expirity\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"oldGuardianIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"newGuardianIndex\",\"type\":\"uint32\"}],\"name\":\"LogGuardianSetChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"token_chain\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"token_decimals\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"token\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"LogTokensLocked\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"consumedVAAs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"idx\",\"type\":\"uint32\"}],\"name\":\"getGuardianSet\",\"outputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"keys\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"internalType\":\"struct Wormhole.GuardianSet\",\"name\":\"gs\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian_set_expirity\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian_set_index\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"guardian_sets\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isWrappedAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"refund_dust\",\"type\":\"bool\"}],\"name\":\"lockAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"lockETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"vaa\",\"type\":\"bytes\"}],\"name\":\"submitVAA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedAssetMaster\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"wrappedAssets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol\":\"Wormhole\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/BytesLib.sol\":{\"keccak256\":\"0x4a28e69afc4c1c1aee48c7b497f9b8452b295ddcf4bbf453d594a1467016d5f2\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://279e22c43f79567e9f7842cfca8ad2329bbbad2eac30413b620796d51f308719\",\"dweb:/ipfs/QmbdRLJYoKJxDbDLeverNMHsNFEcxnohAA713UFLjLm3Jy\"]},\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol\":{\"keccak256\":\"0x843bd25fef0d2a9e47bc76387e86f0ca927625e6557fa1b262ea4a420bb59ac6\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://023ad00a5f095e8172b3cbf337262a35c4a3341299f1989c30c662a0d357236b\",\"dweb:/ipfs/QmPP1gTKNvz6hdfDQgL95xSw35vCK5MFvr4yKRcPexXuwK\"]},\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol\":{\"keccak256\":\"0xf7ce817c18d74da0e2b15fed25b3e7dcb79cc41f422f641bb863f9a40d62ffcf\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://6c931162370f9d24a56743a3f769734e2d7d00c9fc7fcceec81c8765b17ab4b6\",\"dweb:/ipfs/QmQfs7Td14iy6fGF56PrGYq7VKUQtYqjhjebQ2Um1E6fUT\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xf204d98eef08edacf5a02a2af1516ea4febdb6aba7a1ae5ac8deb6e568fd3dbb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4dea62bffbd180772a6cfe7cb90e3a045c52d6b502bdb2fdff83193da42d8d0\",\"dweb:/ipfs/QmW8qGZ5nngajmv5Aamdrpkeuq7S5YCVaR7rtcqNekKHtK\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf3b30f8a49631420635a8c35daacfcaa338012755f18a76fdd118730256f9a27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d7de652204c2ee291a61aa984103dfc7ae4392d651fbbc44a0079caee7c69a3\",\"dweb:/ipfs/Qmcw1cQnq9eWDnrCBwU3TNyqLfTMUFg5YKpYUkELoMPuUE\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xdfb4f812600ba4ce6738c35584ceb8c9433472583051b48ba5b1f66cb758a498\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df02dffe1c1de089d9b4f6192f0dcf464526f2230f420b3deec4645e0cdd2bff\",\"dweb:/ipfs/QmcqXGAU3KJqwrgUVoGJ2W8osomhSJ4R5kdsRpbuW3fELS\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x7ff0067f2d7df4187eaa1cb4800949b929602c9d9cb20fcaee6922a7613ef2fb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78aa63fd7fbb8df2942b6c6e7bd89349507e306edbd5909ee8d9575c31be57e5\",\"dweb:/ipfs/Qmf6z9KWKCJCfEVokgTBhBVq5yHtE6is31N8AV5BHdMkqQ\"]}},\"version\":1}", - "bytecode": "0x60806040526002600160146101000a81548160ff021916908360ff1602179055503480156200002d57600080fd5b5060405162003b6738038062003b6783398181016040528101906200005391906200033e565b600160008190555082600260008063ffffffff1681526020019081526020016000206000820151816000019080519060200190620000939291906200014b565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff1602179055509050506000600360006101000a81548163ffffffff021916908363ffffffff16021790555080600360046101000a81548163ffffffff021916908363ffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200047c565b828054828255906000526020600020908101928215620001c7579160200282015b82811115620001c65782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200016c565b5b509050620001d69190620001da565b5090565b5b808211156200021357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620001db565b5090565b600081519050620002288162000448565b92915050565b600082601f8301126200024057600080fd5b8151620002576200025182620003db565b620003ad565b915081818352602084019350602081019050838560208402820111156200027d57600080fd5b60005b83811015620002b1578162000296888262000217565b84526020840193506020830192505060018101905062000280565b5050505092915050565b600060408284031215620002ce57600080fd5b620002da6040620003ad565b9050600082015167ffffffffffffffff811115620002f757600080fd5b62000305848285016200022e565b60008301525060206200031b8482850162000327565b60208301525092915050565b600081519050620003388162000462565b92915050565b6000806000606084860312156200035457600080fd5b600084015167ffffffffffffffff8111156200036f57600080fd5b6200037d86828701620002bb565b9350506020620003908682870162000217565b9250506040620003a38682870162000327565b9150509250925092565b6000604051905081810181811067ffffffffffffffff82111715620003d157600080fd5b8060405250919050565b600067ffffffffffffffff821115620003f357600080fd5b602082029050602081019050919050565b6000620004118262000418565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600063ffffffff82169050919050565b620004538162000404565b81146200045f57600080fd5b50565b6200046d8162000438565b81146200047957600080fd5b50565b6136db806200048c6000396000f3fe6080604052600436106100a05760003560e01c806370713960116100645780637071396014610205578063822d82b31461022e57806399da1d3c14610259578063a31fe40914610284578063b6694c2a146102c1578063f951975a146102fe576100e0565b80631a2be4da1461011b5780633bc0aee61461015857806342b0aefa146101815780634db47840146101be57806358d62e46146101e9576100e0565b366100e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100d79061318d565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101129061318d565b60405180910390fd5b34801561012757600080fd5b50610142600480360381019061013d91906126ce565b61033b565b60405161014f91906130ab565b60405180910390f35b34801561016457600080fd5b5061017f600480360381019061017a919061284a565b61035b565b005b34801561018d57600080fd5b506101a860048036038101906101a391906128b8565b610bcf565b6040516101b5919061334f565b60405180910390f35b3480156101ca57600080fd5b506101d3610bfd565b6040516101e0919061334f565b60405180910390f35b61020360048036038101906101fe91906127fb565b610c13565b005b34801561021157600080fd5b5061022c600480360381019061022791906126f7565b610dc0565b005b34801561023a57600080fd5b50610243611461565b604051610250919061334f565b60405180910390f35b34801561026557600080fd5b5061026e611477565b60405161027b9190612fec565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a691906127a9565b61149d565b6040516102b891906130ab565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e391906127a9565b6114bd565b6040516102f59190612fec565b60405180910390f35b34801561030a57600080fd5b50610325600480360381019061032091906128b8565b6114f0565b604051610332919061332d565b60405180910390f35b60066020528060005260406000206000915054906101000a900460ff1681565b600260005414156103a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103989061330d565b60405180910390fd5b60026000819055506000610403600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b905060018160ff161461044b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610442906131ed565b60405180910390fd5b60006104a5600185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061163b90919063ffffffff16565b90506000610501600586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b60ff169050600081604202600601905060006105718283898990500389898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116999092919063ffffffff16565b8051906020012090506004600082815260200190815260200160002060009054906101000a900460ff16156105db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d29061316d565b60405180910390fd5b6105e36124cd565b600260008663ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820180548060200260200160405190810160405280929190818152602001828054801561069257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610648575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506000816020015163ffffffff1614806106e5575042816020015163ffffffff16115b610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b9061328d565b60405180910390fd5b836001600360048460000151518161073857fe5b040201111561077c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107739061322d565b60405180910390fd5b60005b848110156109f85760006107e6604283026006018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b90506000610847604284026007018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061175b90919063ffffffff16565b905060006108a8604285026027018d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061175b90919063ffffffff16565b90506000610909604286026047018e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b9050601b8101905085600001518460ff168151811061092457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166001888386866040516000815260200160405260405161096594939291906130c6565b6020604051602081039080840390855afa158015610987573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16146109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de9061320d565b60405180910390fd5b50505050808060010191505061077f565b506000610a55600485018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b90506060610abd60058601600587018c8c9050038c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116999092919063ffffffff16565b905060018260ff161415610b3957600360009054906101000a900463ffffffff1663ffffffff168763ffffffff1614610b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b22906131ad565b60405180910390fd5b610b34816117b9565b610b8f565b60108260ff161415610b5357610b4e81611a37565b610b8e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b859061314d565b60405180910390fd5b5b60016004600086815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050505060016000819055505050565b60026020528060005260406000206000915090508060010160009054906101000a900463ffffffff16905081565b600360049054906101000a900463ffffffff1681565b60026000541415610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c509061330d565b60405180910390fd5b60026000819055506000341415610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c9061324d565b60405180910390fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d0157600080fd5b505af1158015610d15573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff1660001b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1660001b7f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab884600160149054906101000a900460ff166012883488604051610dab969594939291906133ca565b60405180910390a36001600081905550505050565b60026000541415610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd9061330d565b60405180910390fd5b60026000819055506000851415610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e499061324d565b60405180910390fd5b6000600160149054906101000a900460ff1690506000808873ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610eaf57600080fd5b505afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee791906128e1565b9050600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110ad578873ffffffffffffffffffffffffffffffffffffffff16639dc29fac338a6040518363ffffffff1660e01b8152600401610f76929190613022565b600060405180830381600087803b158015610f9057600080fd5b505af1158015610fa4573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff1663026b05396040518163ffffffff1660e01b815260040160206040518083038186803b158015610fee57600080fd5b505afa158015611002573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102691906128e1565b92508873ffffffffffffffffffffffffffffffffffffffff16631ba46cfd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561106e57600080fd5b505afa158015611082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a691906127d2565b91506113f2565b60008973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110e89190613007565b60206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611138919061288f565b905061116733308b8d73ffffffffffffffffffffffffffffffffffffffff16611d07909392919063ffffffff16565b60008a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111a29190613007565b60206040518083038186803b1580156111ba57600080fd5b505afa1580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f2919061288f565b90506112078282611d9090919063ffffffff16565b995060098360ff1611156112ee5760008a90506112366009850360ff16600a0a8c611dda90919063ffffffff16565b9a5086156112e8578b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336112776009880360ff16600a0a85611e2490919063ffffffff16565b6040518363ffffffff1660e01b8152600401611294929190613022565b602060405180830381600087803b1580156112ae57600080fd5b505af11580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e69190612780565b505b60099350505b67ffffffffffffffff801661139260098d73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561134457600080fd5b505afa158015611358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137c91906128e1565b0360ff16600a0a83611dda90919063ffffffff16565b11156113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca9061312d565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff1660001b935050505b3373ffffffffffffffffffffffffffffffffffffffff1660001b827f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab88886858c8e8c6040516114469695949392919061342b565b60405180910390a35050506001600081905550505050505050565b600360009054906101000a900463ffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114f86124cd565b600260008363ffffffff1663ffffffff168152602001908152602001600020604051806040016040529081600082018054806020026020016040519081016040528092919081815260200182805480156115a757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161155d575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b60006001820183511015611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906131cd565b60405180910390fd5b60008260018501015190508091505092915050565b60006004820183511015611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b906131cd565b60405180910390fd5b60008260048501015190508091505092915050565b6060818301845110156116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d8906131cd565b60405180910390fd5b60608215600081146116fe5760405191506020820160405261174f565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561173c578051835260208301925060208101905061171f565b50868552601f19601f8301166040525050505b50809150509392505050565b600060208201835110156117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906131cd565b60405180910390fd5b60008260208501015190508091505092915050565b60006117cf60008361163b90919063ffffffff16565b905060006117e76004846115dd90919063ffffffff16565b905060608160ff1667ffffffffffffffff8111801561180557600080fd5b506040519080825280602002602001820160405280156118345781602001602082028036833780820191505090505b50905060005b8260ff168110156118b75760006118606014830260050187611e6e90919063ffffffff16565b90508083838151811061186f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505050808060010191505061183a565b506000600360009054906101000a900463ffffffff16905083600360006101000a81548163ffffffff021916908363ffffffff1602179055506118f86124cd565b6040518060400160405280848152602001600063ffffffff1681525090508060026000600360009054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000190805190602001906119649291906124ed565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff160217905550905050600360049054906101000a900463ffffffff164201600260008463ffffffff1663ffffffff16815260200190815260200160002060010160006101000a81548163ffffffff021916908363ffffffff1602179055507fdfb80683934199683861bf00b64ecdf0984bbaf661bf27983dba382e99297a6282600360009054906101000a900463ffffffff16604051611a2792919061336a565b60405180910390a1505050505050565b6000611a4d6004836115dd90919063ffffffff16565b90506000611a656005846115dd90919063ffffffff16565b90506000611a7d603285611e6e90919063ffffffff16565b90506000611a956046866115dd90919063ffffffff16565b90506000611aad606887611edb90919063ffffffff16565b90508360ff168560ff161415611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef906132ed565b60405180910390fd5b600160149054906101000a900460ff1660ff168460ff1614611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b469061326d565b60405180910390fd5b600160149054906101000a900460ff1660ff168260ff1614611cba576000611b8160478861175b90919063ffffffff16565b905060008382604051602001611b98929190612fc0565b60405160208183030381529060405280519060200120905060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c45576000611c3360678b6115dd90919063ffffffff16565b9050611c4183878684611f39565b9150505b8073ffffffffffffffffffffffffffffffffffffffff166340c10f1987866040518363ffffffff1660e01b8152600401611c80929190613082565b600060405180830381600087803b158015611c9a57600080fd5b505af1158015611cae573d6000803e3d6000fd5b50505050505050611cff565b6000611cd0605388611e6e90919063ffffffff16565b9050611cfd84838373ffffffffffffffffffffffffffffffffffffffff166120e29092919063ffffffff16565b505b505050505050565b611d8a846323b872dd60e01b858585604051602401611d289392919061304b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612168565b50505050565b6000611dd283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061222f565b905092915050565b6000611e1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061228a565b905092915050565b6000611e6683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506122eb565b905092915050565b60006014820183511015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae906131cd565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b60006020820183511015611f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1b906131cd565b60405180910390fd5b60008260208501015190508091505092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152866037826000f59250508173ffffffffffffffffffffffffffffffffffffffff1663a7a2d3fb8686866040518463ffffffff1660e01b8152600401611ffd93929190613393565b600060405180830381600087803b15801561201757600080fd5b505af115801561202b573d6000803e3d6000fd5b50505050816005600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050949350505050565b6121638363a9059cbb60e01b8484604051602401612101929190613082565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612168565b505050565b60606121ca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166123479092919063ffffffff16565b905060008151111561222a57808060200190518101906121ea9190612780565b612229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612220906132cd565b60405180910390fd5b5b505050565b6000838311158290612277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226e919061310b565b60405180910390fd5b5060008385039050809150509392505050565b600080831182906122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c8919061310b565b60405180910390fd5b5060008385816122dd57fe5b049050809150509392505050565b6000808314158290612333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232a919061310b565b60405180910390fd5b5082848161233d57fe5b0690509392505050565b6060612356848460008561235f565b90509392505050565b606061236a85612482565b6123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a0906132ad565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516123d39190612fa9565b60006040518083038185875af1925050503d8060008114612410576040519150601f19603f3d011682016040523d82523d6000602084013e612415565b606091505b5091509150811561242a57809250505061247a565b60008151111561243d5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612471919061310b565b60405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156124c457506000801b8214155b92505050919050565b604051806040016040528060608152602001600063ffffffff1681525090565b828054828255906000526020600020908101928215612566579160200282015b828111156125655782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061250d565b5b5090506125739190612577565b5090565b5b808211156125ae57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612578565b5090565b6000813590506125c18161361b565b92915050565b6000813590506125d681613632565b92915050565b6000815190506125eb81613632565b92915050565b60008135905061260081613649565b92915050565b60008151905061261581613649565b92915050565b60008083601f84011261262d57600080fd5b8235905067ffffffffffffffff81111561264657600080fd5b60208301915083600182028301111561265e57600080fd5b9250929050565b60008135905061267481613660565b92915050565b60008151905061268981613660565b92915050565b60008135905061269e81613677565b92915050565b6000813590506126b38161368e565b92915050565b6000815190506126c88161368e565b92915050565b6000602082840312156126e057600080fd5b60006126ee848285016125b2565b91505092915050565b60008060008060008060c0878903121561271057600080fd5b600061271e89828a016125b2565b965050602061272f89828a01612665565b955050604061274089828a016125f1565b945050606061275189828a016126a4565b935050608061276289828a0161268f565b92505060a061277389828a016125c7565b9150509295509295509295565b60006020828403121561279257600080fd5b60006127a0848285016125dc565b91505092915050565b6000602082840312156127bb57600080fd5b60006127c9848285016125f1565b91505092915050565b6000602082840312156127e457600080fd5b60006127f284828501612606565b91505092915050565b60008060006060848603121561281057600080fd5b600061281e868287016125f1565b935050602061282f868287016126a4565b92505060406128408682870161268f565b9150509250925092565b6000806020838503121561285d57600080fd5b600083013567ffffffffffffffff81111561287757600080fd5b6128838582860161261b565b92509250509250929050565b6000602082840312156128a157600080fd5b60006128af8482850161267a565b91505092915050565b6000602082840312156128ca57600080fd5b60006128d88482850161268f565b91505092915050565b6000602082840312156128f357600080fd5b6000612901848285016126b9565b91505092915050565b60006129168383612931565b60208301905092915050565b61292b81613566565b82525050565b61293a816134f7565b82525050565b612949816134f7565b82525050565b600061295a8261349c565b61296481856134ca565b935061296f8361348c565b8060005b838110156129a0578151612987888261290a565b9750612992836134bd565b925050600181019050612973565b5085935050505092915050565b6129b681613509565b82525050565b6129c581613515565b82525050565b6129dc6129d782613515565b6135e1565b82525050565b60006129ed826134a7565b6129f781856134db565b9350612a078185602086016135ae565b80840191505092915050565b612a1c81613578565b82525050565b6000612a2d826134b2565b612a3781856134e6565b9350612a478185602086016135ae565b612a50816135fd565b840191505092915050565b6000612a686023836134e6565b91507f6272696467652062616c616e636520776f756c6420657863656564206d61786960008301527f6d756d00000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ace6012836134e6565b91507f696e76616c69642056414120616374696f6e00000000000000000000000000006000830152602082019050919050565b6000612b0e6018836134e6565b91507f5641412077617320616c726561647920657865637574656400000000000000006000830152602082019050919050565b6000612b4e602c836134e6565b91507f706c6561736520757365206c6f636b45544820746f207472616e73666572204560008301527f544820746f20536f6c616e6100000000000000000000000000000000000000006020830152604082019050919050565b6000612bb46039836134e6565b91507f6f6e6c79207468652063757272656e7420677561726469616e2073657420636160008301527f6e206368616e67652074686520677561726469616e20736574000000000000006020830152604082019050919050565b6000612c1a6012836134e6565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000612c5a6018836134e6565b91507f5641412076657273696f6e20696e636f6d70617469626c6500000000000000006000830152602082019050919050565b6000612c9a6015836134e6565b91507f564141207369676e617475726520696e76616c696400000000000000000000006000830152602082019050919050565b6000612cda6009836134e6565b91507f6e6f2071756f72756d00000000000000000000000000000000000000000000006000830152602082019050919050565b6000612d1a6014836134e6565b91507f616d6f756e74206d757374206e6f7420626520300000000000000000000000006000830152602082019050919050565b6000612d5a6019836134e6565b91507f7472616e73666572206d75737420626520696e636f6d696e67000000000000006000830152602082019050919050565b6000612d9a6018836134e6565b91507f677561726469616e2073657420686173206578706972656400000000000000006000830152602082019050919050565b6000612dda601d836134e6565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612e1a602a836134e6565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e806026836134e6565b91507f73616d6520636861696e207472616e736665727320617265206e6f742073757060008301527f706f7274656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ee6601f836134e6565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b60006040830160008301518482036000860152612f36828261294f565b9150506020830151612f4b6020860182612f65565b508091505092915050565b612f5f8161353f565b82525050565b612f6e81613549565b82525050565b612f7d81613549565b82525050565b612f8c81613559565b82525050565b612fa3612f9e82613559565b6135eb565b82525050565b6000612fb582846129e2565b915081905092915050565b6000612fcc8285612f92565b600182019150612fdc82846129cb565b6020820191508190509392505050565b60006020820190506130016000830184612940565b92915050565b600060208201905061301c6000830184612922565b92915050565b60006040820190506130376000830185612922565b6130446020830184612f56565b9392505050565b60006060820190506130606000830186612940565b61306d6020830185612940565b61307a6040830184612f56565b949350505050565b60006040820190506130976000830185612940565b6130a46020830184612f56565b9392505050565b60006020820190506130c060008301846129ad565b92915050565b60006080820190506130db60008301876129bc565b6130e86020830186612f83565b6130f560408301856129bc565b61310260608301846129bc565b95945050505050565b600060208201905081810360008301526131258184612a22565b905092915050565b6000602082019050818103600083015261314681612a5b565b9050919050565b6000602082019050818103600083015261316681612ac1565b9050919050565b6000602082019050818103600083015261318681612b01565b9050919050565b600060208201905081810360008301526131a681612b41565b9050919050565b600060208201905081810360008301526131c681612ba7565b9050919050565b600060208201905081810360008301526131e681612c0d565b9050919050565b6000602082019050818103600083015261320681612c4d565b9050919050565b6000602082019050818103600083015261322681612c8d565b9050919050565b6000602082019050818103600083015261324681612ccd565b9050919050565b6000602082019050818103600083015261326681612d0d565b9050919050565b6000602082019050818103600083015261328681612d4d565b9050919050565b600060208201905081810360008301526132a681612d8d565b9050919050565b600060208201905081810360008301526132c681612dcd565b9050919050565b600060208201905081810360008301526132e681612e0d565b9050919050565b6000602082019050818103600083015261330681612e73565b9050919050565b6000602082019050818103600083015261332681612ed9565b9050919050565b600060208201905081810360008301526133478184612f19565b905092915050565b60006020820190506133646000830184612f74565b92915050565b600060408201905061337f6000830185612f74565b61338c6020830184612f74565b9392505050565b60006060820190506133a86000830186612f83565b6133b560208301856129bc565b6133c26040830184612f83565b949350505050565b600060c0820190506133df6000830189612f83565b6133ec6020830188612f83565b6133f96040830187612a13565b61340660608301866129bc565b6134136080830185612f56565b61342060a0830184612f74565b979650505050505050565b600060c0820190506134406000830189612f83565b61344d6020830188612f83565b61345a6040830187612f83565b61346760608301866129bc565b6134746080830185612f56565b61348160a0830184612f74565b979650505050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006135028261351f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006135718261358a565b9050919050565b600061358382613559565b9050919050565b60006135958261359c565b9050919050565b60006135a78261351f565b9050919050565b60005b838110156135cc5780820151818401526020810190506135b1565b838111156135db576000848401525b50505050565b6000819050919050565b60006135f68261360e565b9050919050565b6000601f19601f8301169050919050565b60008160f81b9050919050565b613624816134f7565b811461362f57600080fd5b50565b61363b81613509565b811461364657600080fd5b50565b61365281613515565b811461365d57600080fd5b50565b6136698161353f565b811461367457600080fd5b50565b61368081613549565b811461368b57600080fd5b50565b61369781613559565b81146136a257600080fd5b5056fea2646970667358221220c2c5c5efcbf02fa3995baa2a1d9f45dfa7344533b3f1c0232cdb372ed8dc4c0764736f6c634300060c0033", - "deployedBytecode": "0x6080604052600436106100a05760003560e01c806370713960116100645780637071396014610205578063822d82b31461022e57806399da1d3c14610259578063a31fe40914610284578063b6694c2a146102c1578063f951975a146102fe576100e0565b80631a2be4da1461011b5780633bc0aee61461015857806342b0aefa146101815780634db47840146101be57806358d62e46146101e9576100e0565b366100e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100d79061318d565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101129061318d565b60405180910390fd5b34801561012757600080fd5b50610142600480360381019061013d91906126ce565b61033b565b60405161014f91906130ab565b60405180910390f35b34801561016457600080fd5b5061017f600480360381019061017a919061284a565b61035b565b005b34801561018d57600080fd5b506101a860048036038101906101a391906128b8565b610bcf565b6040516101b5919061334f565b60405180910390f35b3480156101ca57600080fd5b506101d3610bfd565b6040516101e0919061334f565b60405180910390f35b61020360048036038101906101fe91906127fb565b610c13565b005b34801561021157600080fd5b5061022c600480360381019061022791906126f7565b610dc0565b005b34801561023a57600080fd5b50610243611461565b604051610250919061334f565b60405180910390f35b34801561026557600080fd5b5061026e611477565b60405161027b9190612fec565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a691906127a9565b61149d565b6040516102b891906130ab565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e391906127a9565b6114bd565b6040516102f59190612fec565b60405180910390f35b34801561030a57600080fd5b50610325600480360381019061032091906128b8565b6114f0565b604051610332919061332d565b60405180910390f35b60066020528060005260406000206000915054906101000a900460ff1681565b600260005414156103a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103989061330d565b60405180910390fd5b60026000819055506000610403600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b905060018160ff161461044b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610442906131ed565b60405180910390fd5b60006104a5600185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061163b90919063ffffffff16565b90506000610501600586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b60ff169050600081604202600601905060006105718283898990500389898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116999092919063ffffffff16565b8051906020012090506004600082815260200190815260200160002060009054906101000a900460ff16156105db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d29061316d565b60405180910390fd5b6105e36124cd565b600260008663ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820180548060200260200160405190810160405280929190818152602001828054801561069257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610648575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506000816020015163ffffffff1614806106e5575042816020015163ffffffff16115b610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b9061328d565b60405180910390fd5b836001600360048460000151518161073857fe5b040201111561077c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107739061322d565b60405180910390fd5b60005b848110156109f85760006107e6604283026006018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b90506000610847604284026007018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061175b90919063ffffffff16565b905060006108a8604285026027018d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061175b90919063ffffffff16565b90506000610909604286026047018e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b9050601b8101905085600001518460ff168151811061092457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166001888386866040516000815260200160405260405161096594939291906130c6565b6020604051602081039080840390855afa158015610987573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16146109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de9061320d565b60405180910390fd5b50505050808060010191505061077f565b506000610a55600485018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b90506060610abd60058601600587018c8c9050038c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116999092919063ffffffff16565b905060018260ff161415610b3957600360009054906101000a900463ffffffff1663ffffffff168763ffffffff1614610b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b22906131ad565b60405180910390fd5b610b34816117b9565b610b8f565b60108260ff161415610b5357610b4e81611a37565b610b8e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b859061314d565b60405180910390fd5b5b60016004600086815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050505060016000819055505050565b60026020528060005260406000206000915090508060010160009054906101000a900463ffffffff16905081565b600360049054906101000a900463ffffffff1681565b60026000541415610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c509061330d565b60405180910390fd5b60026000819055506000341415610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c9061324d565b60405180910390fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d0157600080fd5b505af1158015610d15573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff1660001b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1660001b7f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab884600160149054906101000a900460ff166012883488604051610dab969594939291906133ca565b60405180910390a36001600081905550505050565b60026000541415610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd9061330d565b60405180910390fd5b60026000819055506000851415610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e499061324d565b60405180910390fd5b6000600160149054906101000a900460ff1690506000808873ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610eaf57600080fd5b505afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee791906128e1565b9050600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110ad578873ffffffffffffffffffffffffffffffffffffffff16639dc29fac338a6040518363ffffffff1660e01b8152600401610f76929190613022565b600060405180830381600087803b158015610f9057600080fd5b505af1158015610fa4573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff1663026b05396040518163ffffffff1660e01b815260040160206040518083038186803b158015610fee57600080fd5b505afa158015611002573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102691906128e1565b92508873ffffffffffffffffffffffffffffffffffffffff16631ba46cfd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561106e57600080fd5b505afa158015611082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a691906127d2565b91506113f2565b60008973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110e89190613007565b60206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611138919061288f565b905061116733308b8d73ffffffffffffffffffffffffffffffffffffffff16611d07909392919063ffffffff16565b60008a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111a29190613007565b60206040518083038186803b1580156111ba57600080fd5b505afa1580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f2919061288f565b90506112078282611d9090919063ffffffff16565b995060098360ff1611156112ee5760008a90506112366009850360ff16600a0a8c611dda90919063ffffffff16565b9a5086156112e8578b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336112776009880360ff16600a0a85611e2490919063ffffffff16565b6040518363ffffffff1660e01b8152600401611294929190613022565b602060405180830381600087803b1580156112ae57600080fd5b505af11580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e69190612780565b505b60099350505b67ffffffffffffffff801661139260098d73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561134457600080fd5b505afa158015611358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137c91906128e1565b0360ff16600a0a83611dda90919063ffffffff16565b11156113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca9061312d565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff1660001b935050505b3373ffffffffffffffffffffffffffffffffffffffff1660001b827f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab88886858c8e8c6040516114469695949392919061342b565b60405180910390a35050506001600081905550505050505050565b600360009054906101000a900463ffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114f86124cd565b600260008363ffffffff1663ffffffff168152602001908152602001600020604051806040016040529081600082018054806020026020016040519081016040528092919081815260200182805480156115a757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161155d575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b60006001820183511015611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906131cd565b60405180910390fd5b60008260018501015190508091505092915050565b60006004820183511015611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b906131cd565b60405180910390fd5b60008260048501015190508091505092915050565b6060818301845110156116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d8906131cd565b60405180910390fd5b60608215600081146116fe5760405191506020820160405261174f565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561173c578051835260208301925060208101905061171f565b50868552601f19601f8301166040525050505b50809150509392505050565b600060208201835110156117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906131cd565b60405180910390fd5b60008260208501015190508091505092915050565b60006117cf60008361163b90919063ffffffff16565b905060006117e76004846115dd90919063ffffffff16565b905060608160ff1667ffffffffffffffff8111801561180557600080fd5b506040519080825280602002602001820160405280156118345781602001602082028036833780820191505090505b50905060005b8260ff168110156118b75760006118606014830260050187611e6e90919063ffffffff16565b90508083838151811061186f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505050808060010191505061183a565b506000600360009054906101000a900463ffffffff16905083600360006101000a81548163ffffffff021916908363ffffffff1602179055506118f86124cd565b6040518060400160405280848152602001600063ffffffff1681525090508060026000600360009054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000190805190602001906119649291906124ed565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff160217905550905050600360049054906101000a900463ffffffff164201600260008463ffffffff1663ffffffff16815260200190815260200160002060010160006101000a81548163ffffffff021916908363ffffffff1602179055507fdfb80683934199683861bf00b64ecdf0984bbaf661bf27983dba382e99297a6282600360009054906101000a900463ffffffff16604051611a2792919061336a565b60405180910390a1505050505050565b6000611a4d6004836115dd90919063ffffffff16565b90506000611a656005846115dd90919063ffffffff16565b90506000611a7d603285611e6e90919063ffffffff16565b90506000611a956046866115dd90919063ffffffff16565b90506000611aad606887611edb90919063ffffffff16565b90508360ff168560ff161415611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef906132ed565b60405180910390fd5b600160149054906101000a900460ff1660ff168460ff1614611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b469061326d565b60405180910390fd5b600160149054906101000a900460ff1660ff168260ff1614611cba576000611b8160478861175b90919063ffffffff16565b905060008382604051602001611b98929190612fc0565b60405160208183030381529060405280519060200120905060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c45576000611c3360678b6115dd90919063ffffffff16565b9050611c4183878684611f39565b9150505b8073ffffffffffffffffffffffffffffffffffffffff166340c10f1987866040518363ffffffff1660e01b8152600401611c80929190613082565b600060405180830381600087803b158015611c9a57600080fd5b505af1158015611cae573d6000803e3d6000fd5b50505050505050611cff565b6000611cd0605388611e6e90919063ffffffff16565b9050611cfd84838373ffffffffffffffffffffffffffffffffffffffff166120e29092919063ffffffff16565b505b505050505050565b611d8a846323b872dd60e01b858585604051602401611d289392919061304b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612168565b50505050565b6000611dd283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061222f565b905092915050565b6000611e1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061228a565b905092915050565b6000611e6683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506122eb565b905092915050565b60006014820183511015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae906131cd565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b60006020820183511015611f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1b906131cd565b60405180910390fd5b60008260208501015190508091505092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152866037826000f59250508173ffffffffffffffffffffffffffffffffffffffff1663a7a2d3fb8686866040518463ffffffff1660e01b8152600401611ffd93929190613393565b600060405180830381600087803b15801561201757600080fd5b505af115801561202b573d6000803e3d6000fd5b50505050816005600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050949350505050565b6121638363a9059cbb60e01b8484604051602401612101929190613082565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612168565b505050565b60606121ca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166123479092919063ffffffff16565b905060008151111561222a57808060200190518101906121ea9190612780565b612229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612220906132cd565b60405180910390fd5b5b505050565b6000838311158290612277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226e919061310b565b60405180910390fd5b5060008385039050809150509392505050565b600080831182906122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c8919061310b565b60405180910390fd5b5060008385816122dd57fe5b049050809150509392505050565b6000808314158290612333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232a919061310b565b60405180910390fd5b5082848161233d57fe5b0690509392505050565b6060612356848460008561235f565b90509392505050565b606061236a85612482565b6123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a0906132ad565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516123d39190612fa9565b60006040518083038185875af1925050503d8060008114612410576040519150601f19603f3d011682016040523d82523d6000602084013e612415565b606091505b5091509150811561242a57809250505061247a565b60008151111561243d5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612471919061310b565b60405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156124c457506000801b8214155b92505050919050565b604051806040016040528060608152602001600063ffffffff1681525090565b828054828255906000526020600020908101928215612566579160200282015b828111156125655782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061250d565b5b5090506125739190612577565b5090565b5b808211156125ae57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612578565b5090565b6000813590506125c18161361b565b92915050565b6000813590506125d681613632565b92915050565b6000815190506125eb81613632565b92915050565b60008135905061260081613649565b92915050565b60008151905061261581613649565b92915050565b60008083601f84011261262d57600080fd5b8235905067ffffffffffffffff81111561264657600080fd5b60208301915083600182028301111561265e57600080fd5b9250929050565b60008135905061267481613660565b92915050565b60008151905061268981613660565b92915050565b60008135905061269e81613677565b92915050565b6000813590506126b38161368e565b92915050565b6000815190506126c88161368e565b92915050565b6000602082840312156126e057600080fd5b60006126ee848285016125b2565b91505092915050565b60008060008060008060c0878903121561271057600080fd5b600061271e89828a016125b2565b965050602061272f89828a01612665565b955050604061274089828a016125f1565b945050606061275189828a016126a4565b935050608061276289828a0161268f565b92505060a061277389828a016125c7565b9150509295509295509295565b60006020828403121561279257600080fd5b60006127a0848285016125dc565b91505092915050565b6000602082840312156127bb57600080fd5b60006127c9848285016125f1565b91505092915050565b6000602082840312156127e457600080fd5b60006127f284828501612606565b91505092915050565b60008060006060848603121561281057600080fd5b600061281e868287016125f1565b935050602061282f868287016126a4565b92505060406128408682870161268f565b9150509250925092565b6000806020838503121561285d57600080fd5b600083013567ffffffffffffffff81111561287757600080fd5b6128838582860161261b565b92509250509250929050565b6000602082840312156128a157600080fd5b60006128af8482850161267a565b91505092915050565b6000602082840312156128ca57600080fd5b60006128d88482850161268f565b91505092915050565b6000602082840312156128f357600080fd5b6000612901848285016126b9565b91505092915050565b60006129168383612931565b60208301905092915050565b61292b81613566565b82525050565b61293a816134f7565b82525050565b612949816134f7565b82525050565b600061295a8261349c565b61296481856134ca565b935061296f8361348c565b8060005b838110156129a0578151612987888261290a565b9750612992836134bd565b925050600181019050612973565b5085935050505092915050565b6129b681613509565b82525050565b6129c581613515565b82525050565b6129dc6129d782613515565b6135e1565b82525050565b60006129ed826134a7565b6129f781856134db565b9350612a078185602086016135ae565b80840191505092915050565b612a1c81613578565b82525050565b6000612a2d826134b2565b612a3781856134e6565b9350612a478185602086016135ae565b612a50816135fd565b840191505092915050565b6000612a686023836134e6565b91507f6272696467652062616c616e636520776f756c6420657863656564206d61786960008301527f6d756d00000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ace6012836134e6565b91507f696e76616c69642056414120616374696f6e00000000000000000000000000006000830152602082019050919050565b6000612b0e6018836134e6565b91507f5641412077617320616c726561647920657865637574656400000000000000006000830152602082019050919050565b6000612b4e602c836134e6565b91507f706c6561736520757365206c6f636b45544820746f207472616e73666572204560008301527f544820746f20536f6c616e6100000000000000000000000000000000000000006020830152604082019050919050565b6000612bb46039836134e6565b91507f6f6e6c79207468652063757272656e7420677561726469616e2073657420636160008301527f6e206368616e67652074686520677561726469616e20736574000000000000006020830152604082019050919050565b6000612c1a6012836134e6565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000612c5a6018836134e6565b91507f5641412076657273696f6e20696e636f6d70617469626c6500000000000000006000830152602082019050919050565b6000612c9a6015836134e6565b91507f564141207369676e617475726520696e76616c696400000000000000000000006000830152602082019050919050565b6000612cda6009836134e6565b91507f6e6f2071756f72756d00000000000000000000000000000000000000000000006000830152602082019050919050565b6000612d1a6014836134e6565b91507f616d6f756e74206d757374206e6f7420626520300000000000000000000000006000830152602082019050919050565b6000612d5a6019836134e6565b91507f7472616e73666572206d75737420626520696e636f6d696e67000000000000006000830152602082019050919050565b6000612d9a6018836134e6565b91507f677561726469616e2073657420686173206578706972656400000000000000006000830152602082019050919050565b6000612dda601d836134e6565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612e1a602a836134e6565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e806026836134e6565b91507f73616d6520636861696e207472616e736665727320617265206e6f742073757060008301527f706f7274656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ee6601f836134e6565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b60006040830160008301518482036000860152612f36828261294f565b9150506020830151612f4b6020860182612f65565b508091505092915050565b612f5f8161353f565b82525050565b612f6e81613549565b82525050565b612f7d81613549565b82525050565b612f8c81613559565b82525050565b612fa3612f9e82613559565b6135eb565b82525050565b6000612fb582846129e2565b915081905092915050565b6000612fcc8285612f92565b600182019150612fdc82846129cb565b6020820191508190509392505050565b60006020820190506130016000830184612940565b92915050565b600060208201905061301c6000830184612922565b92915050565b60006040820190506130376000830185612922565b6130446020830184612f56565b9392505050565b60006060820190506130606000830186612940565b61306d6020830185612940565b61307a6040830184612f56565b949350505050565b60006040820190506130976000830185612940565b6130a46020830184612f56565b9392505050565b60006020820190506130c060008301846129ad565b92915050565b60006080820190506130db60008301876129bc565b6130e86020830186612f83565b6130f560408301856129bc565b61310260608301846129bc565b95945050505050565b600060208201905081810360008301526131258184612a22565b905092915050565b6000602082019050818103600083015261314681612a5b565b9050919050565b6000602082019050818103600083015261316681612ac1565b9050919050565b6000602082019050818103600083015261318681612b01565b9050919050565b600060208201905081810360008301526131a681612b41565b9050919050565b600060208201905081810360008301526131c681612ba7565b9050919050565b600060208201905081810360008301526131e681612c0d565b9050919050565b6000602082019050818103600083015261320681612c4d565b9050919050565b6000602082019050818103600083015261322681612c8d565b9050919050565b6000602082019050818103600083015261324681612ccd565b9050919050565b6000602082019050818103600083015261326681612d0d565b9050919050565b6000602082019050818103600083015261328681612d4d565b9050919050565b600060208201905081810360008301526132a681612d8d565b9050919050565b600060208201905081810360008301526132c681612dcd565b9050919050565b600060208201905081810360008301526132e681612e0d565b9050919050565b6000602082019050818103600083015261330681612e73565b9050919050565b6000602082019050818103600083015261332681612ed9565b9050919050565b600060208201905081810360008301526133478184612f19565b905092915050565b60006020820190506133646000830184612f74565b92915050565b600060408201905061337f6000830185612f74565b61338c6020830184612f74565b9392505050565b60006060820190506133a86000830186612f83565b6133b560208301856129bc565b6133c26040830184612f83565b949350505050565b600060c0820190506133df6000830189612f83565b6133ec6020830188612f83565b6133f96040830187612a13565b61340660608301866129bc565b6134136080830185612f56565b61342060a0830184612f74565b979650505050505050565b600060c0820190506134406000830189612f83565b61344d6020830188612f83565b61345a6040830187612f83565b61346760608301866129bc565b6134746080830185612f56565b61348160a0830184612f74565b979650505050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006135028261351f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006135718261358a565b9050919050565b600061358382613559565b9050919050565b60006135958261359c565b9050919050565b60006135a78261351f565b9050919050565b60005b838110156135cc5780820151818401526020810190506135b1565b838111156135db576000848401525b50505050565b6000819050919050565b60006135f68261360e565b9050919050565b6000601f19601f8301169050919050565b60008160f81b9050919050565b613624816134f7565b811461362f57600080fd5b50565b61363b81613509565b811461364657600080fd5b50565b61365281613515565b811461365d57600080fd5b50565b6136698161353f565b811461367457600080fd5b50565b61368081613549565b811461368b57600080fd5b50565b61369781613559565b81146136a257600080fd5b5056fea2646970667358221220c2c5c5efcbf02fa3995baa2a1d9f45dfa7344533b3f1c0232cdb372ed8dc4c0764736f6c634300060c0033", + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"keys\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"internalType\":\"struct Wormhole.GuardianSet\",\"name\":\"initial_guardian_set\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"wrapped_asset_master\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_guardian_set_expirity\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"oldGuardianIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"newGuardianIndex\",\"type\":\"uint32\"}],\"name\":\"LogGuardianSetChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"token_chain\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"token_decimals\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"token\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"LogTokensLocked\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"consumedVAAs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"idx\",\"type\":\"uint32\"}],\"name\":\"getGuardianSet\",\"outputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"keys\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"internalType\":\"struct Wormhole.GuardianSet\",\"name\":\"gs\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian_set_expirity\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian_set_index\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"guardian_sets\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isWrappedAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"refund_dust\",\"type\":\"bool\"}],\"name\":\"lockAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"lockETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"vaa\",\"type\":\"bytes\"}],\"name\":\"parseAndVerifyVAA\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"guardian_set_index\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"struct Wormhole.ParsedVAA\",\"name\":\"parsed_vaa\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"vaa\",\"type\":\"bytes\"}],\"name\":\"submitVAA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedAssetMaster\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"wrappedAssets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/Wormhole.sol\":\"Wormhole\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/BytesLib.sol\":{\"keccak256\":\"0x4a28e69afc4c1c1aee48c7b497f9b8452b295ddcf4bbf453d594a1467016d5f2\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://279e22c43f79567e9f7842cfca8ad2329bbbad2eac30413b620796d51f308719\",\"dweb:/ipfs/QmbdRLJYoKJxDbDLeverNMHsNFEcxnohAA713UFLjLm3Jy\"]},\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/Wormhole.sol\":{\"keccak256\":\"0xdbd8e88a0a6cb69b6edc83c34d3c51a67560cb0a88d52e908c6d391435242999\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://630e2d852c4e534cff7d1beb00c3fc165a73d6e3a7ee394c5850cbf4047b0a32\",\"dweb:/ipfs/QmUe3mc6HwXCoL1Q6NACA4kMb6mavMKdZxDqVYG2jycoTh\"]},\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol\":{\"keccak256\":\"0x1aca747b823c4d8492ae379cfd9495e8ff19726302d943da56b2bb71aebecc73\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://716c755b41c76deb60297664878f07e0972867918fde13c20c196263d3daa554\",\"dweb:/ipfs/QmbrxvDYfcgSjBBnDdXyZJcwd8pYyyrQhYqY5h6DaxWKcy\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x9486045e189facd2e868ece35249872598ef03f1087fb6fa4d1161842daa2287\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77c3a04ef8453788b14b1ebbc24dd3f0a18ceb2615cd156aac949a611e552af8\",\"dweb:/ipfs/QmcmqWGguRM3iLuF57tcyrN3F6EA63kzeNkDfQuteBnurr\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca0c2396dbeb3503b51abf4248ebf77a1461edad513c01529df51850a012bee3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://991b44ff44e0496e8554a90f4c0512c28faed45104d40430019f3c67ea67740e\",\"dweb:/ipfs/Qmc3nRapVbcctELoZS5qe17zLkFB3bETBfwzCTMF1CSuGE\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a\",\"dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x8bbbc2f5c10065ee272592ae0a7a6ceb23de2fbd81564ee0bb015ecf404d5f61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b95e56c1640d0ef789fc5c16269e141e992f6c8ac97cc6d377bd3825e9cab182\",\"dweb:/ipfs/QmVzaxJZY51EhagrcNnkxoU6Uq17RhATe7aHvtkC6wUkgK\"]}},\"version\":1}", + "bytecode": "0x60806040526002600160146101000a81548160ff021916908360ff1602179055503480156200002d57600080fd5b50604051620044543803806200445483398181016040528101906200005391906200033e565b600160008190555082600260008063ffffffff1681526020019081526020016000206000820151816000019080519060200190620000939291906200014b565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff1602179055509050506000600360006101000a81548163ffffffff021916908363ffffffff16021790555080600360046101000a81548163ffffffff021916908363ffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200047c565b828054828255906000526020600020908101928215620001c7579160200282015b82811115620001c65782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200016c565b5b509050620001d69190620001da565b5090565b5b808211156200021357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620001db565b5090565b600081519050620002288162000448565b92915050565b600082601f8301126200024057600080fd5b8151620002576200025182620003db565b620003ad565b915081818352602084019350602081019050838560208402820111156200027d57600080fd5b60005b83811015620002b1578162000296888262000217565b84526020840193506020830192505060018101905062000280565b5050505092915050565b600060408284031215620002ce57600080fd5b620002da6040620003ad565b9050600082015167ffffffffffffffff811115620002f757600080fd5b62000305848285016200022e565b60008301525060206200031b8482850162000327565b60208301525092915050565b600081519050620003388162000462565b92915050565b6000806000606084860312156200035457600080fd5b600084015167ffffffffffffffff8111156200036f57600080fd5b6200037d86828701620002bb565b9350506020620003908682870162000217565b9250506040620003a38682870162000327565b9150509250925092565b6000604051905081810181811067ffffffffffffffff82111715620003d157600080fd5b8060405250919050565b600067ffffffffffffffff821115620003f357600080fd5b602082029050602081019050919050565b6000620004118262000418565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600063ffffffff82169050919050565b620004538162000404565b81146200045f57600080fd5b50565b6200046d8162000438565b81146200047957600080fd5b50565b613fc8806200048c6000396000f3fe6080604052600436106100ab5760003560e01c80637071396011610064578063707139601461024d578063822d82b31461027657806399da1d3c146102a1578063a31fe409146102cc578063b6694c2a14610309578063f951975a14610346576100eb565b80631a2be4da146101265780633bc0aee61461016357806342b0aefa1461018c5780634db47840146101c957806358d62e46146101f4578063600b9aa614610210576100eb565b366100eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e290613927565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011d90613927565b60405180910390fd5b34801561013257600080fd5b5061014d60048036038101906101489190612a8a565b610383565b60405161015a9190613845565b60405180910390f35b34801561016f57600080fd5b5061018a60048036038101906101859190612c06565b6103a3565b005b34801561019857600080fd5b506101b360048036038101906101ae9190612c74565b610526565b6040516101c09190613c2b565b60405180910390f35b3480156101d557600080fd5b506101de610554565b6040516101eb9190613c2b565b60405180910390f35b61020e60048036038101906102099190612bb7565b61056a565b005b34801561021c57600080fd5b5061023760048036038101906102329190612c06565b6107f0565b6040516102449190613c09565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190612ab3565b611094565b005b34801561028257600080fd5b5061028b61172a565b6040516102989190613c2b565b60405180910390f35b3480156102ad57600080fd5b506102b6611740565b6040516102c39190613786565b60405180910390f35b3480156102d857600080fd5b506102f360048036038101906102ee9190612b65565b611766565b6040516103009190613845565b60405180910390f35b34801561031557600080fd5b50610330600480360381019061032b9190612b65565b611786565b60405161033d9190613786565b60405180910390f35b34801561035257600080fd5b5061036d60048036038101906103689190612c74565b6117b9565b60405161037a9190613be7565b60405180910390f35b60066020528060005260406000206000915054906101000a900460ff1681565b600260005414156103e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e090613ba7565b60405180910390fd5b60026000819055506103f961283e565b61040383836107f0565b90506001816080015160ff16141561048b57600360009054906101000a900463ffffffff1663ffffffff16816040015163ffffffff1614610479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047090613987565b60405180910390fd5b6104868160a001516118a6565b6104e9565b6010816080015160ff1614156104ad576104a88160a00151611b87565b6104e8565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104df906138e7565b60405180910390fd5b5b6001600460008360200151815260200190815260200160002060006101000a81548160ff0219169083151502179055505060016000819055505050565b60026020528060005260406000206000915090508060010160009054906101000a900463ffffffff16905081565b600360049054906101000a900463ffffffff1681565b600260005414156105b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a790613ba7565b60405180910390fd5b6002600081905550600160149054906101000a900460ff1660ff168260ff161415610610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060790613a27565b60405180910390fd5b6000610629633b9aca0034611f0590919063ffffffff16565b90506000610644633b9aca0034611f5b90919063ffffffff16565b9050600081141561068a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068190613a87565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156106d0573d6000803e3d6000fd5b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db08334036040518263ffffffff1660e01b81526004016000604051808303818588803b15801561072f57600080fd5b505af1158015610743573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff1660001b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1660001b7f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab886600160149054906101000a900460ff1660098a878a6040516107d996959493929190613ca6565b60405180910390a350506001600081905550505050565b6107f861283e565b610850600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611fb190919063ffffffff16565b816000019060ff16908160ff16815250506001816000015160ff16146108ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a2906139e7565b60405180910390fd5b610903600184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061200f90919063ffffffff16565b816040019063ffffffff16908163ffffffff16815250506000610974600585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611fb190919063ffffffff16565b60ff16905060008160420260060190506109db8186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061200f90919063ffffffff16565b836060019063ffffffff16908163ffffffff1681525050610a508182878790500387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061206d9092919063ffffffff16565b80519060200120836020018181525050600460008460200151815260200190815260200160002060009054906101000a900460ff1615610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc90613907565b60405180910390fd5b610acd612889565b60026000856040015163ffffffff1663ffffffff16815260200190815260200160002060405180604001604052908160008201805480602002602001604051908101604052809291908181526020018280548015610b8057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610b36575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050600081600001515111610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090613bc7565b60405180910390fd5b6000816020015163ffffffff161480610c1b575042816020015163ffffffff16115b610c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5190613b07565b60405180910390fd5b826001600a60026003600a8660000151510281610c7357fe5b040281610c7c57fe5b04011115610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb690613ac7565b60405180910390fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905060005b84811015610fb2576000610d4e604283026006018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611fb190919063ffffffff16565b90508260010b8160ff1613610d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8f90613b47565b60405180910390fd5b8060ff1692506000610dfd604284026007018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061212f90919063ffffffff16565b90506000610e5e604285026027018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061212f90919063ffffffff16565b90506000610ebf604286026047018d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611fb190919063ffffffff16565b9050601b8101905086600001518460ff1681518110610eda57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1660018b6020015183868660405160008152602001604052604051610f1f9493929190613860565b6020604051602081039080840390855afa158015610f41573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9890613a47565b60405180910390fd5b505050508080600101915050610ce7565b5061100d6004840188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611fb190919063ffffffff16565b856080019060ff16908160ff16815250506110826005840160058501898990500389898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061206d9092919063ffffffff16565b8560a001819052505050505092915050565b600260005414156110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d190613ba7565b60405180910390fd5b6002600081905550600160149054906101000a900460ff1660ff168360ff16141561113a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113190613a27565b60405180910390fd5b6000600160149054906101000a900460ff1690506000808873ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561119757600080fd5b505afa1580156111ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cf9190612c9d565b9050600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611395578873ffffffffffffffffffffffffffffffffffffffff16639dc29fac338a6040518363ffffffff1660e01b815260040161125e9291906137bc565b600060405180830381600087803b15801561127857600080fd5b505af115801561128c573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff1663026b05396040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d657600080fd5b505afa1580156112ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130e9190612c9d565b92508873ffffffffffffffffffffffffffffffffffffffff16631ba46cfd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561135657600080fd5b505afa15801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e9190612b8e565b9150611677565b60008973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113d091906137a1565b60206040518083038186803b1580156113e857600080fd5b505afa1580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190612c4b565b905061144f33308b8d73ffffffffffffffffffffffffffffffffffffffff1661218d909392919063ffffffff16565b60008a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161148a91906137a1565b60206040518083038186803b1580156114a257600080fd5b505afa1580156114b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114da9190612c4b565b90506114ef828261221690919063ffffffff16565b995060098360ff1611156115735760008a905061151e6009850360ff16600a0a8c611f5b90919063ffffffff16565b9a50861561156d5761156c336115466009870360ff16600a0a84611f0590919063ffffffff16565b8e73ffffffffffffffffffffffffffffffffffffffff166122669092919063ffffffff16565b5b60099350505b67ffffffffffffffff801661161760098d73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c957600080fd5b505afa1580156115dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116019190612c9d565b0360ff16600a0a83611f5b90919063ffffffff16565b1115611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f906138c7565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff1660001b935050505b60008814156116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b290613a87565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660001b827f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab88886858c8e8c60405161170f96959493929190613d07565b60405180910390a35050506001600081905550505050505050565b600360009054906101000a900463ffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117c1612889565b600260008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820180548060200260200160405190810160405280929190818152602001828054801561187057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611826575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b60006118bc60008361200f90919063ffffffff16565b90506001600360009054906101000a900463ffffffff160163ffffffff168163ffffffff1614611921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191890613aa7565b60405180910390fd5b6000611937600484611fb190919063ffffffff16565b905060608160ff1667ffffffffffffffff8111801561195557600080fd5b506040519080825280602002602001820160405280156119845781602001602082028036833780820191505090505b50905060005b8260ff16811015611a075760006119b060148302600501876122ec90919063ffffffff16565b9050808383815181106119bf57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505050808060010191505061198a565b506000600360009054906101000a900463ffffffff16905083600360006101000a81548163ffffffff021916908363ffffffff160217905550611a48612889565b6040518060400160405280848152602001600063ffffffff1681525090508060026000600360009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020019081526020016000206000820151816000019080519060200190611ab49291906128a9565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff160217905550905050600360049054906101000a900463ffffffff164201600260008463ffffffff1663ffffffff16815260200190815260200160002060010160006101000a81548163ffffffff021916908363ffffffff1602179055507fdfb80683934199683861bf00b64ecdf0984bbaf661bf27983dba382e99297a6282600360009054906101000a900463ffffffff16604051611b77929190613c46565b60405180910390a1505050505050565b6000611b9d600483611fb190919063ffffffff16565b90506000611bb5600584611fb190919063ffffffff16565b90506000611bcd6032856122ec90919063ffffffff16565b90506000611be5604686611fb190919063ffffffff16565b90506000611bfd60688761235990919063ffffffff16565b90508360ff168560ff161415611c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3f90613b87565b60405180910390fd5b600160149054906101000a900460ff1660ff168460ff1614611c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9690613ae7565b60405180910390fd5b600160149054906101000a900460ff1660ff168260ff1614611e0a576000611cd160478861212f90919063ffffffff16565b905060008382604051602001611ce892919061375a565b60405160208183030381529060405280519060200120905060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d95576000611d8360678b611fb190919063ffffffff16565b9050611d91838786846123b7565b9150505b8073ffffffffffffffffffffffffffffffffffffffff166340c10f1987866040518363ffffffff1660e01b8152600401611dd092919061381c565b600060405180830381600087803b158015611dea57600080fd5b505af1158015611dfe573d6000803e3d6000fd5b50505050505050611efd565b6000611e206053886122ec90919063ffffffff16565b905060008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6a57600080fd5b505afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea29190612c9d565b905060098160ff161115611ecf57611ecc6009820360ff16600a0a8461256090919063ffffffff16565b92505b611efa85848473ffffffffffffffffffffffffffffffffffffffff166122669092919063ffffffff16565b50505b505050505050565b6000808211611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4090613a07565b60405180910390fd5b818381611f5257fe5b06905092915050565b6000808211611f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f96906139a7565b60405180910390fd5b818381611fa857fe5b04905092915050565b60006001820183511015611ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff1906139c7565b60405180910390fd5b60008260018501015190508091505092915050565b60006004820183511015612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f906139c7565b60405180910390fd5b60008260048501015190508091505092915050565b6060818301845110156120b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ac906139c7565b60405180910390fd5b60608215600081146120d257604051915060208201604052612123565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561211057805183526020830192506020810190506120f3565b50868552601f19601f8301166040525050505b50809150509392505050565b60006020820183511015612178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216f906139c7565b60405180910390fd5b60008260208501015190508091505092915050565b612210846323b872dd60e01b8585856040516024016121ae939291906137e5565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125d0565b50505050565b60008282111561225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290613947565b60405180910390fd5b818303905092915050565b6122e78363a9059cbb60e01b848460405160240161228592919061381c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125d0565b505050565b60006014820183511015612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c906139c7565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b600060208201835110156123a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612399906139c7565b60405180910390fd5b60008260208501015190508091505092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152866037826000f59250508173ffffffffffffffffffffffffffffffffffffffff1663a7a2d3fb8686866040518463ffffffff1660e01b815260040161247b93929190613c6f565b600060405180830381600087803b15801561249557600080fd5b505af11580156124a9573d6000803e3d6000fd5b50505050816005600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050949350505050565b60008083141561257357600090506125ca565b600082840290508284828161258457fe5b04146125c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bc90613a67565b60405180910390fd5b809150505b92915050565b6060612632826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126979092919063ffffffff16565b905060008151111561269257808060200190518101906126529190612b3c565b612691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268890613b67565b60405180910390fd5b5b505050565b60606126a684846000856126af565b90509392505050565b6060824710156126f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126eb90613967565b60405180910390fd5b6126fd856127c4565b61273c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273390613b27565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516127669190613743565b60006040518083038185875af1925050503d80600081146127a3576040519150601f19603f3d011682016040523d82523d6000602084013e6127a8565b606091505b50915091506127b88282866127d7565b92505050949350505050565b600080823b905060008111915050919050565b606083156127e757829050612837565b6000835111156127fa5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282e91906138a5565b60405180910390fd5b9392505050565b6040518060c00160405280600060ff16815260200160008019168152602001600063ffffffff168152602001600063ffffffff168152602001600060ff168152602001606081525090565b604051806040016040528060608152602001600063ffffffff1681525090565b828054828255906000526020600020908101928215612922579160200282015b828111156129215782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128c9565b5b50905061292f9190612933565b5090565b5b8082111561296a57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612934565b5090565b60008135905061297d81613f08565b92915050565b60008135905061299281613f1f565b92915050565b6000815190506129a781613f1f565b92915050565b6000813590506129bc81613f36565b92915050565b6000815190506129d181613f36565b92915050565b60008083601f8401126129e957600080fd5b8235905067ffffffffffffffff811115612a0257600080fd5b602083019150836001820283011115612a1a57600080fd5b9250929050565b600081359050612a3081613f4d565b92915050565b600081519050612a4581613f4d565b92915050565b600081359050612a5a81613f64565b92915050565b600081359050612a6f81613f7b565b92915050565b600081519050612a8481613f7b565b92915050565b600060208284031215612a9c57600080fd5b6000612aaa8482850161296e565b91505092915050565b60008060008060008060c08789031215612acc57600080fd5b6000612ada89828a0161296e565b9650506020612aeb89828a01612a21565b9550506040612afc89828a016129ad565b9450506060612b0d89828a01612a60565b9350506080612b1e89828a01612a4b565b92505060a0612b2f89828a01612983565b9150509295509295509295565b600060208284031215612b4e57600080fd5b6000612b5c84828501612998565b91505092915050565b600060208284031215612b7757600080fd5b6000612b85848285016129ad565b91505092915050565b600060208284031215612ba057600080fd5b6000612bae848285016129c2565b91505092915050565b600080600060608486031215612bcc57600080fd5b6000612bda868287016129ad565b9350506020612beb86828701612a60565b9250506040612bfc86828701612a4b565b9150509250925092565b60008060208385031215612c1957600080fd5b600083013567ffffffffffffffff811115612c3357600080fd5b612c3f858286016129d7565b92509250509250929050565b600060208284031215612c5d57600080fd5b6000612c6b84828501612a36565b91505092915050565b600060208284031215612c8657600080fd5b6000612c9484828501612a4b565b91505092915050565b600060208284031215612caf57600080fd5b6000612cbd84828501612a75565b91505092915050565b6000612cd28383612ced565b60208301905092915050565b612ce781613e53565b82525050565b612cf681613de4565b82525050565b612d0581613de4565b82525050565b6000612d1682613d78565b612d208185613da6565b9350612d2b83613d68565b8060005b83811015612d5c578151612d438882612cc6565b9750612d4e83613d99565b925050600181019050612d2f565b5085935050505092915050565b612d7281613df6565b82525050565b612d8181613e02565b82525050565b612d9081613e02565b82525050565b612da7612da282613e02565b613ece565b82525050565b6000612db882613d83565b612dc28185613db7565b9350612dd2818560208601613e9b565b612ddb81613eea565b840191505092915050565b6000612df182613d83565b612dfb8185613dc8565b9350612e0b818560208601613e9b565b80840191505092915050565b612e2081613e65565b82525050565b6000612e3182613d8e565b612e3b8185613dd3565b9350612e4b818560208601613e9b565b612e5481613eea565b840191505092915050565b6000612e6c602383613dd3565b91507f6272696467652062616c616e636520776f756c6420657863656564206d61786960008301527f6d756d00000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ed2601283613dd3565b91507f696e76616c69642056414120616374696f6e00000000000000000000000000006000830152602082019050919050565b6000612f12601883613dd3565b91507f5641412077617320616c726561647920657865637574656400000000000000006000830152602082019050919050565b6000612f52602c83613dd3565b91507f706c6561736520757365206c6f636b45544820746f207472616e73666572204560008301527f544820746f20536f6c616e6100000000000000000000000000000000000000006020830152604082019050919050565b6000612fb8601e83613dd3565b91507f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006000830152602082019050919050565b6000612ff8602683613dd3565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061305e603983613dd3565b91507f6f6e6c79207468652063757272656e7420677561726469616e2073657420636160008301527f6e206368616e67652074686520677561726469616e20736574000000000000006020830152604082019050919050565b60006130c4601a83613dd3565b91507f536166654d6174683a206469766973696f6e206279207a65726f0000000000006000830152602082019050919050565b6000613104601283613dd3565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000613144601883613dd3565b91507f5641412076657273696f6e20696e636f6d70617469626c6500000000000000006000830152602082019050919050565b6000613184601883613dd3565b91507f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000006000830152602082019050919050565b60006131c4602383613dd3565b91507f6d757374206e6f74207472616e7366657220746f207468652073616d6520636860008301527f61696e00000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061322a601583613dd3565b91507f564141207369676e617475726520696e76616c696400000000000000000000006000830152602082019050919050565b600061326a602183613dd3565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006132d0601e83613dd3565b91507f7472756e636174656420616d6f756e74206d757374206e6f74206265203000006000830152602082019050919050565b6000613310602183613dd3565b91507f696e646578206d75737420696e63726561736520696e207374657073206f662060008301527f31000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613376600983613dd3565b91507f6e6f2071756f72756d00000000000000000000000000000000000000000000006000830152602082019050919050565b60006133b6601983613dd3565b91507f7472616e73666572206d75737420626520696e636f6d696e67000000000000006000830152602082019050919050565b60006133f6601883613dd3565b91507f677561726469616e2073657420686173206578706972656400000000000000006000830152602082019050919050565b6000613436601d83613dd3565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000613476602383613dd3565b91507f7369676e617475726520696e6469636573206d75737420626520617363656e6460008301527f696e6700000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134dc602a83613dd3565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000613542602683613dd3565b91507f73616d6520636861696e207472616e736665727320617265206e6f742073757060008301527f706f7274656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006135a8601f83613dd3565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b60006135e8601483613dd3565b91507f696e76616c696420677561726469616e207365740000000000000000000000006000830152602082019050919050565b600060408301600083015184820360008601526136388282612d0b565b915050602083015161364d60208601826136f0565b508091505092915050565b600060c083016000830151613670600086018261370e565b5060208301516136836020860182612d78565b50604083015161369660408601826136f0565b5060608301516136a960608601826136f0565b5060808301516136bc608086018261370e565b5060a083015184820360a08601526136d48282612dad565b9150508091505092915050565b6136ea81613e2c565b82525050565b6136f981613e36565b82525050565b61370881613e36565b82525050565b61371781613e46565b82525050565b61372681613e46565b82525050565b61373d61373882613e46565b613ed8565b82525050565b600061374f8284612de6565b915081905092915050565b6000613766828561372c565b6001820191506137768284612d96565b6020820191508190509392505050565b600060208201905061379b6000830184612cfc565b92915050565b60006020820190506137b66000830184612cde565b92915050565b60006040820190506137d16000830185612cde565b6137de60208301846136e1565b9392505050565b60006060820190506137fa6000830186612cfc565b6138076020830185612cfc565b61381460408301846136e1565b949350505050565b60006040820190506138316000830185612cfc565b61383e60208301846136e1565b9392505050565b600060208201905061385a6000830184612d69565b92915050565b60006080820190506138756000830187612d87565b613882602083018661371d565b61388f6040830185612d87565b61389c6060830184612d87565b95945050505050565b600060208201905081810360008301526138bf8184612e26565b905092915050565b600060208201905081810360008301526138e081612e5f565b9050919050565b6000602082019050818103600083015261390081612ec5565b9050919050565b6000602082019050818103600083015261392081612f05565b9050919050565b6000602082019050818103600083015261394081612f45565b9050919050565b6000602082019050818103600083015261396081612fab565b9050919050565b6000602082019050818103600083015261398081612feb565b9050919050565b600060208201905081810360008301526139a081613051565b9050919050565b600060208201905081810360008301526139c0816130b7565b9050919050565b600060208201905081810360008301526139e0816130f7565b9050919050565b60006020820190508181036000830152613a0081613137565b9050919050565b60006020820190508181036000830152613a2081613177565b9050919050565b60006020820190508181036000830152613a40816131b7565b9050919050565b60006020820190508181036000830152613a608161321d565b9050919050565b60006020820190508181036000830152613a808161325d565b9050919050565b60006020820190508181036000830152613aa0816132c3565b9050919050565b60006020820190508181036000830152613ac081613303565b9050919050565b60006020820190508181036000830152613ae081613369565b9050919050565b60006020820190508181036000830152613b00816133a9565b9050919050565b60006020820190508181036000830152613b20816133e9565b9050919050565b60006020820190508181036000830152613b4081613429565b9050919050565b60006020820190508181036000830152613b6081613469565b9050919050565b60006020820190508181036000830152613b80816134cf565b9050919050565b60006020820190508181036000830152613ba081613535565b9050919050565b60006020820190508181036000830152613bc08161359b565b9050919050565b60006020820190508181036000830152613be0816135db565b9050919050565b60006020820190508181036000830152613c01818461361b565b905092915050565b60006020820190508181036000830152613c238184613658565b905092915050565b6000602082019050613c4060008301846136ff565b92915050565b6000604082019050613c5b60008301856136ff565b613c6860208301846136ff565b9392505050565b6000606082019050613c84600083018661371d565b613c916020830185612d87565b613c9e604083018461371d565b949350505050565b600060c082019050613cbb600083018961371d565b613cc8602083018861371d565b613cd56040830187612e17565b613ce26060830186612d87565b613cef60808301856136e1565b613cfc60a08301846136ff565b979650505050505050565b600060c082019050613d1c600083018961371d565b613d29602083018861371d565b613d36604083018761371d565b613d436060830186612d87565b613d5060808301856136e1565b613d5d60a08301846136ff565b979650505050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613def82613e0c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000613e5e82613e77565b9050919050565b6000613e7082613e46565b9050919050565b6000613e8282613e89565b9050919050565b6000613e9482613e0c565b9050919050565b60005b83811015613eb9578082015181840152602081019050613e9e565b83811115613ec8576000848401525b50505050565b6000819050919050565b6000613ee382613efb565b9050919050565b6000601f19601f8301169050919050565b60008160f81b9050919050565b613f1181613de4565b8114613f1c57600080fd5b50565b613f2881613df6565b8114613f3357600080fd5b50565b613f3f81613e02565b8114613f4a57600080fd5b50565b613f5681613e2c565b8114613f6157600080fd5b50565b613f6d81613e36565b8114613f7857600080fd5b50565b613f8481613e46565b8114613f8f57600080fd5b5056fea2646970667358221220be6268c55fc12db2a6d48a837359a790ca4e234bc0d1c3c7914a3dcb9598614464736f6c634300060c0033", + "deployedBytecode": "0x6080604052600436106100ab5760003560e01c80637071396011610064578063707139601461024d578063822d82b31461027657806399da1d3c146102a1578063a31fe409146102cc578063b6694c2a14610309578063f951975a14610346576100eb565b80631a2be4da146101265780633bc0aee61461016357806342b0aefa1461018c5780634db47840146101c957806358d62e46146101f4578063600b9aa614610210576100eb565b366100eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e290613927565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011d90613927565b60405180910390fd5b34801561013257600080fd5b5061014d60048036038101906101489190612a8a565b610383565b60405161015a9190613845565b60405180910390f35b34801561016f57600080fd5b5061018a60048036038101906101859190612c06565b6103a3565b005b34801561019857600080fd5b506101b360048036038101906101ae9190612c74565b610526565b6040516101c09190613c2b565b60405180910390f35b3480156101d557600080fd5b506101de610554565b6040516101eb9190613c2b565b60405180910390f35b61020e60048036038101906102099190612bb7565b61056a565b005b34801561021c57600080fd5b5061023760048036038101906102329190612c06565b6107f0565b6040516102449190613c09565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190612ab3565b611094565b005b34801561028257600080fd5b5061028b61172a565b6040516102989190613c2b565b60405180910390f35b3480156102ad57600080fd5b506102b6611740565b6040516102c39190613786565b60405180910390f35b3480156102d857600080fd5b506102f360048036038101906102ee9190612b65565b611766565b6040516103009190613845565b60405180910390f35b34801561031557600080fd5b50610330600480360381019061032b9190612b65565b611786565b60405161033d9190613786565b60405180910390f35b34801561035257600080fd5b5061036d60048036038101906103689190612c74565b6117b9565b60405161037a9190613be7565b60405180910390f35b60066020528060005260406000206000915054906101000a900460ff1681565b600260005414156103e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e090613ba7565b60405180910390fd5b60026000819055506103f961283e565b61040383836107f0565b90506001816080015160ff16141561048b57600360009054906101000a900463ffffffff1663ffffffff16816040015163ffffffff1614610479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047090613987565b60405180910390fd5b6104868160a001516118a6565b6104e9565b6010816080015160ff1614156104ad576104a88160a00151611b87565b6104e8565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104df906138e7565b60405180910390fd5b5b6001600460008360200151815260200190815260200160002060006101000a81548160ff0219169083151502179055505060016000819055505050565b60026020528060005260406000206000915090508060010160009054906101000a900463ffffffff16905081565b600360049054906101000a900463ffffffff1681565b600260005414156105b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a790613ba7565b60405180910390fd5b6002600081905550600160149054906101000a900460ff1660ff168260ff161415610610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060790613a27565b60405180910390fd5b6000610629633b9aca0034611f0590919063ffffffff16565b90506000610644633b9aca0034611f5b90919063ffffffff16565b9050600081141561068a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068190613a87565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156106d0573d6000803e3d6000fd5b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db08334036040518263ffffffff1660e01b81526004016000604051808303818588803b15801561072f57600080fd5b505af1158015610743573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff1660001b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1660001b7f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab886600160149054906101000a900460ff1660098a878a6040516107d996959493929190613ca6565b60405180910390a350506001600081905550505050565b6107f861283e565b610850600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611fb190919063ffffffff16565b816000019060ff16908160ff16815250506001816000015160ff16146108ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a2906139e7565b60405180910390fd5b610903600184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061200f90919063ffffffff16565b816040019063ffffffff16908163ffffffff16815250506000610974600585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611fb190919063ffffffff16565b60ff16905060008160420260060190506109db8186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061200f90919063ffffffff16565b836060019063ffffffff16908163ffffffff1681525050610a508182878790500387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061206d9092919063ffffffff16565b80519060200120836020018181525050600460008460200151815260200190815260200160002060009054906101000a900460ff1615610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc90613907565b60405180910390fd5b610acd612889565b60026000856040015163ffffffff1663ffffffff16815260200190815260200160002060405180604001604052908160008201805480602002602001604051908101604052809291908181526020018280548015610b8057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610b36575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050600081600001515111610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090613bc7565b60405180910390fd5b6000816020015163ffffffff161480610c1b575042816020015163ffffffff16115b610c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5190613b07565b60405180910390fd5b826001600a60026003600a8660000151510281610c7357fe5b040281610c7c57fe5b04011115610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb690613ac7565b60405180910390fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905060005b84811015610fb2576000610d4e604283026006018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611fb190919063ffffffff16565b90508260010b8160ff1613610d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8f90613b47565b60405180910390fd5b8060ff1692506000610dfd604284026007018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061212f90919063ffffffff16565b90506000610e5e604285026027018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061212f90919063ffffffff16565b90506000610ebf604286026047018d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611fb190919063ffffffff16565b9050601b8101905086600001518460ff1681518110610eda57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1660018b6020015183868660405160008152602001604052604051610f1f9493929190613860565b6020604051602081039080840390855afa158015610f41573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9890613a47565b60405180910390fd5b505050508080600101915050610ce7565b5061100d6004840188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611fb190919063ffffffff16565b856080019060ff16908160ff16815250506110826005840160058501898990500389898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061206d9092919063ffffffff16565b8560a001819052505050505092915050565b600260005414156110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d190613ba7565b60405180910390fd5b6002600081905550600160149054906101000a900460ff1660ff168360ff16141561113a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113190613a27565b60405180910390fd5b6000600160149054906101000a900460ff1690506000808873ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561119757600080fd5b505afa1580156111ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cf9190612c9d565b9050600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611395578873ffffffffffffffffffffffffffffffffffffffff16639dc29fac338a6040518363ffffffff1660e01b815260040161125e9291906137bc565b600060405180830381600087803b15801561127857600080fd5b505af115801561128c573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff1663026b05396040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d657600080fd5b505afa1580156112ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130e9190612c9d565b92508873ffffffffffffffffffffffffffffffffffffffff16631ba46cfd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561135657600080fd5b505afa15801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e9190612b8e565b9150611677565b60008973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113d091906137a1565b60206040518083038186803b1580156113e857600080fd5b505afa1580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190612c4b565b905061144f33308b8d73ffffffffffffffffffffffffffffffffffffffff1661218d909392919063ffffffff16565b60008a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161148a91906137a1565b60206040518083038186803b1580156114a257600080fd5b505afa1580156114b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114da9190612c4b565b90506114ef828261221690919063ffffffff16565b995060098360ff1611156115735760008a905061151e6009850360ff16600a0a8c611f5b90919063ffffffff16565b9a50861561156d5761156c336115466009870360ff16600a0a84611f0590919063ffffffff16565b8e73ffffffffffffffffffffffffffffffffffffffff166122669092919063ffffffff16565b5b60099350505b67ffffffffffffffff801661161760098d73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c957600080fd5b505afa1580156115dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116019190612c9d565b0360ff16600a0a83611f5b90919063ffffffff16565b1115611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f906138c7565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff1660001b935050505b60008814156116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b290613a87565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660001b827f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab88886858c8e8c60405161170f96959493929190613d07565b60405180910390a35050506001600081905550505050505050565b600360009054906101000a900463ffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117c1612889565b600260008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820180548060200260200160405190810160405280929190818152602001828054801561187057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611826575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b60006118bc60008361200f90919063ffffffff16565b90506001600360009054906101000a900463ffffffff160163ffffffff168163ffffffff1614611921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191890613aa7565b60405180910390fd5b6000611937600484611fb190919063ffffffff16565b905060608160ff1667ffffffffffffffff8111801561195557600080fd5b506040519080825280602002602001820160405280156119845781602001602082028036833780820191505090505b50905060005b8260ff16811015611a075760006119b060148302600501876122ec90919063ffffffff16565b9050808383815181106119bf57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505050808060010191505061198a565b506000600360009054906101000a900463ffffffff16905083600360006101000a81548163ffffffff021916908363ffffffff160217905550611a48612889565b6040518060400160405280848152602001600063ffffffff1681525090508060026000600360009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020019081526020016000206000820151816000019080519060200190611ab49291906128a9565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff160217905550905050600360049054906101000a900463ffffffff164201600260008463ffffffff1663ffffffff16815260200190815260200160002060010160006101000a81548163ffffffff021916908363ffffffff1602179055507fdfb80683934199683861bf00b64ecdf0984bbaf661bf27983dba382e99297a6282600360009054906101000a900463ffffffff16604051611b77929190613c46565b60405180910390a1505050505050565b6000611b9d600483611fb190919063ffffffff16565b90506000611bb5600584611fb190919063ffffffff16565b90506000611bcd6032856122ec90919063ffffffff16565b90506000611be5604686611fb190919063ffffffff16565b90506000611bfd60688761235990919063ffffffff16565b90508360ff168560ff161415611c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3f90613b87565b60405180910390fd5b600160149054906101000a900460ff1660ff168460ff1614611c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9690613ae7565b60405180910390fd5b600160149054906101000a900460ff1660ff168260ff1614611e0a576000611cd160478861212f90919063ffffffff16565b905060008382604051602001611ce892919061375a565b60405160208183030381529060405280519060200120905060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d95576000611d8360678b611fb190919063ffffffff16565b9050611d91838786846123b7565b9150505b8073ffffffffffffffffffffffffffffffffffffffff166340c10f1987866040518363ffffffff1660e01b8152600401611dd092919061381c565b600060405180830381600087803b158015611dea57600080fd5b505af1158015611dfe573d6000803e3d6000fd5b50505050505050611efd565b6000611e206053886122ec90919063ffffffff16565b905060008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6a57600080fd5b505afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea29190612c9d565b905060098160ff161115611ecf57611ecc6009820360ff16600a0a8461256090919063ffffffff16565b92505b611efa85848473ffffffffffffffffffffffffffffffffffffffff166122669092919063ffffffff16565b50505b505050505050565b6000808211611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4090613a07565b60405180910390fd5b818381611f5257fe5b06905092915050565b6000808211611f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f96906139a7565b60405180910390fd5b818381611fa857fe5b04905092915050565b60006001820183511015611ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff1906139c7565b60405180910390fd5b60008260018501015190508091505092915050565b60006004820183511015612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f906139c7565b60405180910390fd5b60008260048501015190508091505092915050565b6060818301845110156120b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ac906139c7565b60405180910390fd5b60608215600081146120d257604051915060208201604052612123565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561211057805183526020830192506020810190506120f3565b50868552601f19601f8301166040525050505b50809150509392505050565b60006020820183511015612178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216f906139c7565b60405180910390fd5b60008260208501015190508091505092915050565b612210846323b872dd60e01b8585856040516024016121ae939291906137e5565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125d0565b50505050565b60008282111561225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290613947565b60405180910390fd5b818303905092915050565b6122e78363a9059cbb60e01b848460405160240161228592919061381c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125d0565b505050565b60006014820183511015612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c906139c7565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b600060208201835110156123a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612399906139c7565b60405180910390fd5b60008260208501015190508091505092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152866037826000f59250508173ffffffffffffffffffffffffffffffffffffffff1663a7a2d3fb8686866040518463ffffffff1660e01b815260040161247b93929190613c6f565b600060405180830381600087803b15801561249557600080fd5b505af11580156124a9573d6000803e3d6000fd5b50505050816005600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050949350505050565b60008083141561257357600090506125ca565b600082840290508284828161258457fe5b04146125c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bc90613a67565b60405180910390fd5b809150505b92915050565b6060612632826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126979092919063ffffffff16565b905060008151111561269257808060200190518101906126529190612b3c565b612691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268890613b67565b60405180910390fd5b5b505050565b60606126a684846000856126af565b90509392505050565b6060824710156126f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126eb90613967565b60405180910390fd5b6126fd856127c4565b61273c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273390613b27565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516127669190613743565b60006040518083038185875af1925050503d80600081146127a3576040519150601f19603f3d011682016040523d82523d6000602084013e6127a8565b606091505b50915091506127b88282866127d7565b92505050949350505050565b600080823b905060008111915050919050565b606083156127e757829050612837565b6000835111156127fa5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282e91906138a5565b60405180910390fd5b9392505050565b6040518060c00160405280600060ff16815260200160008019168152602001600063ffffffff168152602001600063ffffffff168152602001600060ff168152602001606081525090565b604051806040016040528060608152602001600063ffffffff1681525090565b828054828255906000526020600020908101928215612922579160200282015b828111156129215782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128c9565b5b50905061292f9190612933565b5090565b5b8082111561296a57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612934565b5090565b60008135905061297d81613f08565b92915050565b60008135905061299281613f1f565b92915050565b6000815190506129a781613f1f565b92915050565b6000813590506129bc81613f36565b92915050565b6000815190506129d181613f36565b92915050565b60008083601f8401126129e957600080fd5b8235905067ffffffffffffffff811115612a0257600080fd5b602083019150836001820283011115612a1a57600080fd5b9250929050565b600081359050612a3081613f4d565b92915050565b600081519050612a4581613f4d565b92915050565b600081359050612a5a81613f64565b92915050565b600081359050612a6f81613f7b565b92915050565b600081519050612a8481613f7b565b92915050565b600060208284031215612a9c57600080fd5b6000612aaa8482850161296e565b91505092915050565b60008060008060008060c08789031215612acc57600080fd5b6000612ada89828a0161296e565b9650506020612aeb89828a01612a21565b9550506040612afc89828a016129ad565b9450506060612b0d89828a01612a60565b9350506080612b1e89828a01612a4b565b92505060a0612b2f89828a01612983565b9150509295509295509295565b600060208284031215612b4e57600080fd5b6000612b5c84828501612998565b91505092915050565b600060208284031215612b7757600080fd5b6000612b85848285016129ad565b91505092915050565b600060208284031215612ba057600080fd5b6000612bae848285016129c2565b91505092915050565b600080600060608486031215612bcc57600080fd5b6000612bda868287016129ad565b9350506020612beb86828701612a60565b9250506040612bfc86828701612a4b565b9150509250925092565b60008060208385031215612c1957600080fd5b600083013567ffffffffffffffff811115612c3357600080fd5b612c3f858286016129d7565b92509250509250929050565b600060208284031215612c5d57600080fd5b6000612c6b84828501612a36565b91505092915050565b600060208284031215612c8657600080fd5b6000612c9484828501612a4b565b91505092915050565b600060208284031215612caf57600080fd5b6000612cbd84828501612a75565b91505092915050565b6000612cd28383612ced565b60208301905092915050565b612ce781613e53565b82525050565b612cf681613de4565b82525050565b612d0581613de4565b82525050565b6000612d1682613d78565b612d208185613da6565b9350612d2b83613d68565b8060005b83811015612d5c578151612d438882612cc6565b9750612d4e83613d99565b925050600181019050612d2f565b5085935050505092915050565b612d7281613df6565b82525050565b612d8181613e02565b82525050565b612d9081613e02565b82525050565b612da7612da282613e02565b613ece565b82525050565b6000612db882613d83565b612dc28185613db7565b9350612dd2818560208601613e9b565b612ddb81613eea565b840191505092915050565b6000612df182613d83565b612dfb8185613dc8565b9350612e0b818560208601613e9b565b80840191505092915050565b612e2081613e65565b82525050565b6000612e3182613d8e565b612e3b8185613dd3565b9350612e4b818560208601613e9b565b612e5481613eea565b840191505092915050565b6000612e6c602383613dd3565b91507f6272696467652062616c616e636520776f756c6420657863656564206d61786960008301527f6d756d00000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ed2601283613dd3565b91507f696e76616c69642056414120616374696f6e00000000000000000000000000006000830152602082019050919050565b6000612f12601883613dd3565b91507f5641412077617320616c726561647920657865637574656400000000000000006000830152602082019050919050565b6000612f52602c83613dd3565b91507f706c6561736520757365206c6f636b45544820746f207472616e73666572204560008301527f544820746f20536f6c616e6100000000000000000000000000000000000000006020830152604082019050919050565b6000612fb8601e83613dd3565b91507f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006000830152602082019050919050565b6000612ff8602683613dd3565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061305e603983613dd3565b91507f6f6e6c79207468652063757272656e7420677561726469616e2073657420636160008301527f6e206368616e67652074686520677561726469616e20736574000000000000006020830152604082019050919050565b60006130c4601a83613dd3565b91507f536166654d6174683a206469766973696f6e206279207a65726f0000000000006000830152602082019050919050565b6000613104601283613dd3565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000613144601883613dd3565b91507f5641412076657273696f6e20696e636f6d70617469626c6500000000000000006000830152602082019050919050565b6000613184601883613dd3565b91507f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000006000830152602082019050919050565b60006131c4602383613dd3565b91507f6d757374206e6f74207472616e7366657220746f207468652073616d6520636860008301527f61696e00000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061322a601583613dd3565b91507f564141207369676e617475726520696e76616c696400000000000000000000006000830152602082019050919050565b600061326a602183613dd3565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006132d0601e83613dd3565b91507f7472756e636174656420616d6f756e74206d757374206e6f74206265203000006000830152602082019050919050565b6000613310602183613dd3565b91507f696e646578206d75737420696e63726561736520696e207374657073206f662060008301527f31000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613376600983613dd3565b91507f6e6f2071756f72756d00000000000000000000000000000000000000000000006000830152602082019050919050565b60006133b6601983613dd3565b91507f7472616e73666572206d75737420626520696e636f6d696e67000000000000006000830152602082019050919050565b60006133f6601883613dd3565b91507f677561726469616e2073657420686173206578706972656400000000000000006000830152602082019050919050565b6000613436601d83613dd3565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000613476602383613dd3565b91507f7369676e617475726520696e6469636573206d75737420626520617363656e6460008301527f696e6700000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134dc602a83613dd3565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000613542602683613dd3565b91507f73616d6520636861696e207472616e736665727320617265206e6f742073757060008301527f706f7274656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006135a8601f83613dd3565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b60006135e8601483613dd3565b91507f696e76616c696420677561726469616e207365740000000000000000000000006000830152602082019050919050565b600060408301600083015184820360008601526136388282612d0b565b915050602083015161364d60208601826136f0565b508091505092915050565b600060c083016000830151613670600086018261370e565b5060208301516136836020860182612d78565b50604083015161369660408601826136f0565b5060608301516136a960608601826136f0565b5060808301516136bc608086018261370e565b5060a083015184820360a08601526136d48282612dad565b9150508091505092915050565b6136ea81613e2c565b82525050565b6136f981613e36565b82525050565b61370881613e36565b82525050565b61371781613e46565b82525050565b61372681613e46565b82525050565b61373d61373882613e46565b613ed8565b82525050565b600061374f8284612de6565b915081905092915050565b6000613766828561372c565b6001820191506137768284612d96565b6020820191508190509392505050565b600060208201905061379b6000830184612cfc565b92915050565b60006020820190506137b66000830184612cde565b92915050565b60006040820190506137d16000830185612cde565b6137de60208301846136e1565b9392505050565b60006060820190506137fa6000830186612cfc565b6138076020830185612cfc565b61381460408301846136e1565b949350505050565b60006040820190506138316000830185612cfc565b61383e60208301846136e1565b9392505050565b600060208201905061385a6000830184612d69565b92915050565b60006080820190506138756000830187612d87565b613882602083018661371d565b61388f6040830185612d87565b61389c6060830184612d87565b95945050505050565b600060208201905081810360008301526138bf8184612e26565b905092915050565b600060208201905081810360008301526138e081612e5f565b9050919050565b6000602082019050818103600083015261390081612ec5565b9050919050565b6000602082019050818103600083015261392081612f05565b9050919050565b6000602082019050818103600083015261394081612f45565b9050919050565b6000602082019050818103600083015261396081612fab565b9050919050565b6000602082019050818103600083015261398081612feb565b9050919050565b600060208201905081810360008301526139a081613051565b9050919050565b600060208201905081810360008301526139c0816130b7565b9050919050565b600060208201905081810360008301526139e0816130f7565b9050919050565b60006020820190508181036000830152613a0081613137565b9050919050565b60006020820190508181036000830152613a2081613177565b9050919050565b60006020820190508181036000830152613a40816131b7565b9050919050565b60006020820190508181036000830152613a608161321d565b9050919050565b60006020820190508181036000830152613a808161325d565b9050919050565b60006020820190508181036000830152613aa0816132c3565b9050919050565b60006020820190508181036000830152613ac081613303565b9050919050565b60006020820190508181036000830152613ae081613369565b9050919050565b60006020820190508181036000830152613b00816133a9565b9050919050565b60006020820190508181036000830152613b20816133e9565b9050919050565b60006020820190508181036000830152613b4081613429565b9050919050565b60006020820190508181036000830152613b6081613469565b9050919050565b60006020820190508181036000830152613b80816134cf565b9050919050565b60006020820190508181036000830152613ba081613535565b9050919050565b60006020820190508181036000830152613bc08161359b565b9050919050565b60006020820190508181036000830152613be0816135db565b9050919050565b60006020820190508181036000830152613c01818461361b565b905092915050565b60006020820190508181036000830152613c238184613658565b905092915050565b6000602082019050613c4060008301846136ff565b92915050565b6000604082019050613c5b60008301856136ff565b613c6860208301846136ff565b9392505050565b6000606082019050613c84600083018661371d565b613c916020830185612d87565b613c9e604083018461371d565b949350505050565b600060c082019050613cbb600083018961371d565b613cc8602083018861371d565b613cd56040830187612e17565b613ce26060830186612d87565b613cef60808301856136e1565b613cfc60a08301846136ff565b979650505050505050565b600060c082019050613d1c600083018961371d565b613d29602083018861371d565b613d36604083018761371d565b613d436060830186612d87565b613d5060808301856136e1565b613d5d60a08301846136ff565b979650505050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613def82613e0c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000613e5e82613e77565b9050919050565b6000613e7082613e46565b9050919050565b6000613e8282613e89565b9050919050565b6000613e9482613e0c565b9050919050565b60005b83811015613eb9578082015181840152602081019050613e9e565b83811115613ec8576000848401525b50505050565b6000819050919050565b6000613ee382613efb565b9050919050565b6000601f19601f8301169050919050565b60008160f81b9050919050565b613f1181613de4565b8114613f1c57600080fd5b50565b613f2881613df6565b8114613f3357600080fd5b50565b613f3f81613e02565b8114613f4a57600080fd5b50565b613f5681613e2c565b8114613f6157600080fd5b50565b613f6d81613e36565b8114613f7857600080fd5b50565b613f8481613e46565b8114613f8f57600080fd5b5056fea2646970667358221220be6268c55fc12db2a6d48a837359a790ca4e234bc0d1c3c7914a3dcb9598614464736f6c634300060c0033", "immutableReferences": {}, - "sourceMap": "502:9541:1:-:0;;;832:1;815:18;;;;;;;;;;;;;;;;;;;;1964:360;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1628:1:9;1743:7;:22;;;;2114:20:1;2095:13;:16;2109:1;2095:16;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2208:1;2187:18;;:22;;;;;;;;;;;;;;;;;;2243;2219:21;;:46;;;;;;;;;;;;;;;;;;2297:20;2276:18;;:41;;;;;;;;;;;;;;;;;;1964:360;;;502:9541;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;164:722::-;;292:3;285:4;277:6;273:17;269:27;259:2;;310:1;307;300:12;259:2;340:6;334:13;362:80;377:64;434:6;377:64;:::i;:::-;362:80;:::i;:::-;353:89;;459:5;484:6;477:5;470:21;514:4;506:6;502:17;492:27;;536:4;531:3;527:14;520:21;;589:6;636:3;628:4;620:6;616:17;611:3;607:27;604:36;601:2;;;653:1;650;643:12;601:2;678:1;663:217;688:6;685:1;682:13;663:217;;;746:3;768:48;812:3;800:10;768:48;:::i;:::-;763:3;756:61;840:4;835:3;831:14;824:21;;868:4;863:3;859:14;852:21;;720:160;710:1;707;703:9;698:14;;663:217;;;667:14;252:634;;;;;;;:::o;928:617::-;;1056:4;1044:9;1039:3;1035:19;1031:30;1028:2;;;1074:1;1071;1064:12;1028:2;1092:20;1107:4;1092:20;:::i;:::-;1083:29;;1183:1;1172:9;1168:17;1162:24;1206:18;1198:6;1195:30;1192:2;;;1238:1;1235;1228:12;1192:2;1273:85;1354:3;1345:6;1334:9;1330:22;1273:85;:::i;:::-;1266:4;1259:5;1255:16;1248:111;1122:248;1431:2;1464:59;1519:3;1510:6;1499:9;1495:22;1464:59;:::i;:::-;1457:4;1450:5;1446:16;1439:85;1380:155;1022:523;;;;:::o;1552:132::-;;1635:6;1629:13;1620:22;;1647:32;1673:5;1647:32;:::i;:::-;1614:70;;;;:::o;1691:668::-;;;;1867:2;1855:9;1846:7;1842:23;1838:32;1835:2;;;1883:1;1880;1873:12;1835:2;1939:1;1928:9;1924:17;1918:24;1962:18;1954:6;1951:30;1948:2;;;1994:1;1991;1984:12;1948:2;2014:92;2098:7;2089:6;2078:9;2074:22;2014:92;:::i;:::-;2004:102;;1897:215;2143:2;2161:64;2217:7;2208:6;2197:9;2193:22;2161:64;:::i;:::-;2151:74;;2122:109;2262:2;2280:63;2335:7;2326:6;2315:9;2311:22;2280:63;:::i;:::-;2270:73;;2241:108;1829:530;;;;;:::o;2366:256::-;;2428:2;2422:9;2412:19;;2466:4;2458:6;2454:17;2565:6;2553:10;2550:22;2529:18;2517:10;2514:34;2511:62;2508:2;;;2586:1;2583;2576:12;2508:2;2606:10;2602:2;2595:22;2406:216;;;;:::o;2629:304::-;;2788:18;2780:6;2777:30;2774:2;;;2820:1;2817;2810:12;2774:2;2855:4;2847:6;2843:17;2835:25;;2918:4;2912;2908:15;2900:23;;2711:222;;;:::o;2940:91::-;;3002:24;3020:5;3002:24;:::i;:::-;2991:35;;2985:46;;;:::o;3038:121::-;;3111:42;3104:5;3100:54;3089:65;;3083:76;;;:::o;3166:88::-;;3238:10;3231:5;3227:22;3216:33;;3210:44;;;:::o;3261:117::-;3330:24;3348:5;3330:24;:::i;:::-;3323:5;3320:35;3310:2;;3369:1;3366;3359:12;3310:2;3304:74;:::o;3385:115::-;3453:23;3470:5;3453:23;:::i;:::-;3446:5;3443:34;3433:2;;3491:1;3488;3481:12;3433:2;3427:73;:::o;502:9541:1:-;;;;;;;", - "deployedSourceMap": "502:9541:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9985:54;;;;;;;;;;:::i;:::-;;;;;;;;502:9541;9895:54;;;;;;;;;;:::i;:::-;;;;;;;;1911:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2458:1874;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1467:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1677:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9398:462;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7554:1838;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1559:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;747:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1758:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1857:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2330:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1911:46;;;;;;;;;;;;;;;;;;;;;;:::o;2458:1874::-;1671:1:9;2260:7;;:19;;2252:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:1;2390:7;:18;;;;2541:13:1::1;2557:14;2569:1;2557:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;;;:::i;:::-;2541:30;;2600:1;2589:7;:12;;;2581:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2687:29;2719:15;2732:1;2719:3;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;;:::i;:::-;2687:47;;2745:19;2767:14;2779:1;2767:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;;;:::i;:::-;2745:36;;;;2791:11;2814;2809:2;:16;2805:1;:20;2791:34;;2947:12;2972:38;2982:6;3003;2990:3;;:10;;:19;2972:3;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;:::i;:::-;2962:49;;;;;;2947:64;;3030:12;:18;3043:4;3030:18;;;;;;;;;;;;;;;;;;;;;3029:19;3021:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3088:31;;:::i;:::-;3122:13;:37;3136:22;3122:37;;;;;;;;;;;;;;;3088:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;3209:1;3177:12;:28;;;:33;;;:83;;;;3245:15;3214:12;:28;;;:46;;;3177:83;3169:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;3351:11;3346:1;3341;3336;3309:12;:17;;;:24;:28;;;;;;3308:34;3307:40;:55;;3299:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;3392:6;3387:373;3408:11;3404:1;:15;3387:373;;;3440:11;3454:23;3474:2;3470:1;:6;3466:1;:10;3454:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;3440:37;;3491:9;3503:25;3525:2;3521:1;:6;3517:1;:10;3503:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;3491:37;;3542:9;3554:26;3577:2;3573:1;:6;3568:2;:11;3554:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;3542:38;;3594:7;3604:24;3625:2;3621:1;:6;3616:2;:11;3604:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;3594:34;;3647:2;3642:7;;;;3699:12;:17;;;3717:5;3699:24;;;;;;;;;;;;;;;;3671:52;;:24;3681:4;3687:1;3690;3693;3671:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;:52;;;3663:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;3387:373;;;;3421:3;;;;;;;3387:373;;;;3770:12;3785:23;3806:1;3797:6;:10;3785:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;3770:38;;3818:20;3841:48;3860:1;3851:6;:10;3886:1;3877:6;:10;3863:3;;:10;;:25;3841:3;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;:::i;:::-;3818:71;;3937:4;3927:6;:14;;;3923:332;;;3991:18;;;;;;;;;;;3965:44;;:22;:44;;;3957:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;4085:29;4106:7;4085:20;:29::i;:::-;3923:332;;;4145:4;4135:6;:14;;;4131:124;;;4165:20;4177:7;4165:11;:20::i;:::-;4131:124;;;4216:28;;;;;;;;;;:::i;:::-;;;;;;;;4131:124;3923:332;4321:4;4300:12;:18;4313:4;4300:18;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;2419:1:9;;;;;;;;1628::::0;2563:7;:22;;;;2458:1874:1;;:::o;1467:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1677:35::-;;;;;;;;;;;;;:::o;9398:462::-;1671:1:9;2260:7;;:19;;2252:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:1;2390:7;:18;;;;9557:1:1::1;9544:9;:14;;9536:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;916:42;9627:25;;;9661:9;9627:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;9811:10;9803:19;;9795:28;;916:42;9772:20;;9764:29;;9720:133;9736:12;9750:8;;;;;;;;;;;9760:2;9825:9;9836;9847:5;9720:133;;;;;;;;;;;:::i;:::-;;;;;;;;1628:1:9::0;2563:7;:22;;;;9398:462:1;;;:::o;7554:1838::-;1671:1:9;2260:7;;:19;;2252:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:1;2390:7;:18;;;;7778:1:1::1;7768:6;:11;;7760:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;7815:17;7835:8;;;;;;;;;;;7815:28;;7853:21;7884:14:::0;7907:5:::1;7901:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7884:40;;7939:14;:21;7954:5;7939:21;;;;;;;;;;;;;;;;;;;;;;;;;7935:1312;;;7989:5;7976:24;;;8001:10;8013:6;7976:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8061:5;8048:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8034:46;;8123:5;8110:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8094:50;;7935:1312;;;8175:21;8206:5;8199:23;;;8231:4;8199:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8175:62;;8251:65;8282:10;8302:4;8309:6;8258:5;8251:30;;;;:65;;;;;;:::i;:::-;8330:20;8360:5;8353:23;;;8385:4;8353:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8330:61;;8605:31;8622:13;8605:12;:16;;:31;;;;:::i;:::-;8596:40;;8722:1;8711:8;:12;;;8707:339;;;8743:23;8769:6;8743:32;;8802:39;8838:1;8827:8;:12;8819:21;;8813:2;:27;8802:6;:10;;:39;;;;:::i;:::-;8793:48;;8864:11;8860:141;;;8905:5;8899:21;;;8921:10;8933:48;8978:1;8967:8;:12;8959:21;;8953:2;:27;8933:15;:19;;:48;;;;:::i;:::-;8899:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8860:141;9030:1;9019:12;;8707:339;;669:26;9068:74:::0;::::1;:60;9125:1;9105:5;9099:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:27;9091:36;;9085:2;:42;9068:12;:16;;:60;;;;:::i;:::-;:74;;9060:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;9229:5;9221:14;;9213:23;;9197:39;;7935:1312;;;9346:10;9338:19;;9330:28;;9315:13;9262:123;9278:12;9292:11;9305:8;9360:9;9371:6;9379:5;9262:123;;;;;;;;;;;:::i;:::-;;;;;;;;2419:1:9;;;1628::::0;2563:7;:22;;;;7554:1838:1;;;;;;:::o;1559:32::-;;;;;;;;;;;;;:::o;747:33::-;;;;;;;;;;;;;:::o;1758:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;1857:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;2330:122::-;2387:21;;:::i;:::-;2427:13;:18;2441:3;2427:18;;;;;;;;;;;;;;;2420:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2330:122;;;:::o;11710:302:0:-;11787:5;11839:1;11830:6;:10;11812:6;:13;:29;;11804:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11874:14;11962:6;11956:3;11948:6;11944:16;11940:29;11934:36;11922:48;;11997:8;11990:15;;;11710:302;;;;:::o;12329:305::-;12407:6;12460:1;12451:6;:10;12433:6;:13;:29;;12425:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12495:15;12584:6;12578:3;12570:6;12566:16;12562:29;12556:36;12544:48;;12619:8;12612:15;;;12329:305;;;;:::o;8865:2480::-;8999:12;9062:7;9053:6;:16;9035:6;:13;:35;;9027:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9104:22;9174:7;9167:15;9200:1;9195:1895;;;;11231:4;11225:11;11212:24;;11282:4;11271:9;11267:20;11261:4;11254:34;9160:2142;;9195:1895;9369:4;9363:11;9350:24;;9996:2;9987:7;9983:16;10362:9;10355:17;10349:4;10345:28;10333:9;10322;10318:25;10314:60;10410:7;10406:2;10402:16;10654:6;10640:9;10633:17;10627:4;10623:28;10611:9;10603:6;10599:22;10595:57;10591:70;10436:417;10687:3;10683:2;10680:11;10436:417;;;10831:2;10825:9;10821:2;10814:21;10728:4;10724:2;10720:13;10714:19;;10768:4;10764:2;10760:13;10754:19;;10436:417;;;10440:239;10889:7;10878:9;10871:26;11071:2;11067:7;11062:2;11058;11054:11;11050:25;11044:4;11037:39;9202:1888;;;9160:2142;;11329:9;11322:16;;;8865:2480;;;;;:::o;13895:319::-;13974:7;14028:2;14019:6;:11;14001:6;:13;:30;;13993:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14064:19;14161:6;14154:4;14146:6;14142:17;14138:30;14132:37;14117:52;;14196:11;14189:18;;;13895:319;;;;:::o;4338:812:1:-;4405:29;4437:16;4451:1;4437:4;:13;;:16;;;;:::i;:::-;4405:48;;4463:9;4475:15;4488:1;4475:4;:12;;:15;;;;:::i;:::-;4463:27;;4501:30;4548:3;4534:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4501:51;;4567:6;4562:134;4583:3;4579:7;;:1;:7;4562:134;;;4607:12;4622:26;4645:2;4641:1;:6;4637:1;:10;4622:4;:14;;:26;;;;:::i;:::-;4607:41;;4681:4;4662:13;4676:1;4662:16;;;;;;;;;;;;;:23;;;;;;;;;;;4562:134;4588:3;;;;;;;4562:134;;;;4706:29;4738:18;;;;;;;;;;;4706:50;;4787:22;4766:18;;:43;;;;;;;;;;;;;;;;;;4820:35;;:::i;:::-;4858:29;;;;;;;;4870:13;4858:29;;;;4885:1;4858:29;;;;;4820:67;;4933:16;4897:13;:33;4911:18;;;;;;;;;;;4897:33;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5041:21;;;;;;;;;;;5022:15;5015:47;4959:13;:37;4973:22;4959:37;;;;;;;;;;;;;;;:53;;;:103;;;;;;;;;;;;;;;;;;5078:65;5100:22;5124:18;;;;;;;;;;;5078:65;;;;;;;:::i;:::-;;;;;;;;4338:812;;;;;;:::o;5156:1447::-;5257:18;5278:15;5291:1;5278:4;:12;;:15;;;;:::i;:::-;5257:36;;5304:18;5325:15;5338:1;5325:4;:12;;:15;;;;:::i;:::-;5304:36;;5459:22;5484:23;5499:7;5484:4;:14;;:23;;;;:::i;:::-;5459:48;;5518:17;5538:16;5551:2;5538:4;:12;;:16;;;;:::i;:::-;5518:36;;5618:14;5635:19;5650:3;5635:4;:14;;:19;;;;:::i;:::-;5618:36;;5689:12;5673:28;;:12;:28;;;;5665:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5778:8;;;;;;;;;;;5762:24;;:12;:24;;;5754:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5846:8;;;;;;;;;;;5831:23;;:11;:23;;;5827:770;;5870:21;5894:18;5909:2;5894:4;:14;;:18;;;;:::i;:::-;5870:42;;5926:16;5972:11;5985:13;5955:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5945:55;;;;;;5926:74;;6092:21;6116:13;:23;6130:8;6116:23;;;;;;;;;;;;;;;;;;;;;6092:47;;6182:1;6157:27;;:13;:27;;;6153:212;;;6204:20;6227:17;6240:3;6227:4;:12;;:17;;;;:::i;:::-;6204:40;;6278:72;6297:8;6307:11;6320:13;6335:14;6278:18;:72::i;:::-;6262:88;;6153:212;;6392:13;6379:32;;;6412:14;6428:6;6379:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5827:770;;;;;;6466:21;6490:23;6505:7;6490:4;:14;;:23;;;;:::i;:::-;6466:47;;6528:58;6563:14;6579:6;6535:13;6528:34;;;;:58;;;;;:::i;:::-;5827:770;;5156:1447;;;;;;:::o;877:203:7:-;977:96;997:5;1027:27;;;1056:4;1062:2;1066:5;1004:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;977:19;:96::i;:::-;877:203;;;;:::o;1321:134:4:-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1398:50;;1321:134;;;;:::o;3101:130::-;3159:7;3185:39;3189:1;3192;3185:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3178:46;;3101:130;;;;:::o;4436:128::-;4494:7;4520:37;4524:1;4527;4520:37;;;;;;;;;;;;;;;;;:3;:37::i;:::-;4513:44;;4436:128;;;;:::o;11351:353:0:-;11430:7;11484:2;11475:6;:11;11457:6;:13;:30;;11449:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11520:19;11631:27;11621:6;11614:4;11606:6;11602:17;11598:30;11592:37;11588:71;11573:86;;11686:11;11679:18;;;11351:353;;;;:::o;13579:310::-;13658:7;13712:2;13703:6;:11;13685:6;:13;:30;;13677:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13748:16;13839:6;13832:4;13824:6;13820:17;13816:30;13810:37;13798:49;;13874:8;13867:15;;;13579:310;;;;:::o;6609:939:1:-;6726:13;6918:19;6948:18;;;;;;;;;;;6940:27;;6918:49;;7019:4;7013:11;7051:66;7044:5;7037:81;7156:11;7149:4;7142:5;7138:16;7131:37;7206:66;7199:4;7192:5;7188:16;7181:92;7319:4;7313;7306:5;7303:1;7295:29;7286:38;;6986:348;7385:5;7372:30;;;7403:11;7416:13;7431:8;7372:68;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7498:5;7476:13;:19;7490:4;7476:19;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;7537:4;7513:14;:21;7528:5;7513:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;6609:939;;;;;;;:::o;696:175:7:-;778:86;798:5;828:23;;;853:2;857:5;805:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:19;:86::i;:::-;696:175;;;:::o;2959:751::-;3378:23;3404:69;3432:4;3404:69;;;;;;;;;;;;;;;;;3412:5;3404:27;;;;:69;;;;;:::i;:::-;3378:95;;3507:1;3487:10;:17;:21;3483:221;;;3627:10;3616:30;;;;;;;;;;;;:::i;:::-;3608:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3483:221;2959:751;;;:::o;1746:187:4:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;3713:272::-;3799:7;3830:1;3826;:5;3833:12;3818:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3856:9;3872:1;3868;:5;;;;;;3856:17;;3977:1;3970:8;;;3713:272;;;;;:::o;5035:163::-;5121:7;5153:1;5148;:6;;5156:12;5140:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5190:1;5186;:5;;;;;;5179:12;;5035:163;;;;;:::o;3770:194:8:-;3873:12;3904:53;3927:6;3935:4;3941:1;3944:12;3904:22;:53::i;:::-;3897:60;;3770:194;;;;;:::o;5117:958::-;5247:12;5279:18;5290:6;5279:10;:18::i;:::-;5271:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5402:12;5416:23;5443:6;:11;;5463:8;5474:4;5443:36;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5401:78;;;;5493:7;5489:580;;;5523:10;5516:17;;;;;;5489:580;5654:1;5634:10;:17;:21;5630:429;;;5892:10;5886:17;5952:15;5939:10;5935:2;5931:19;5924:44;5841:145;6031:12;6024:20;;;;;;;;;;;:::i;:::-;;;;;;;;5117:958;;;;;;;:::o;718:610::-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:124::-;;219:6;206:20;197:29;;231:30;255:5;231:30;:::i;:::-;191:75;;;;:::o;273:128::-;;354:6;348:13;339:22;;366:30;390:5;366:30;:::i;:::-;333:68;;;;:::o;408:130::-;;488:6;475:20;466:29;;500:33;527:5;500:33;:::i;:::-;460:78;;;;:::o;545:134::-;;629:6;623:13;614:22;;641:33;668:5;641:33;:::i;:::-;608:71;;;;:::o;700:336::-;;;814:3;807:4;799:6;795:17;791:27;781:2;;832:1;829;822:12;781:2;865:6;852:20;842:30;;892:18;884:6;881:30;878:2;;;924:1;921;914:12;878:2;958:4;950:6;946:17;934:29;;1009:3;1001:4;993:6;989:17;979:8;975:32;972:41;969:2;;;1026:1;1023;1016:12;969:2;774:262;;;;;:::o;1044:130::-;;1124:6;1111:20;1102:29;;1136:33;1163:5;1136:33;:::i;:::-;1096:78;;;;:::o;1181:134::-;;1265:6;1259:13;1250:22;;1277:33;1304:5;1277:33;:::i;:::-;1244:71;;;;:::o;1322:128::-;;1401:6;1388:20;1379:29;;1413:32;1439:5;1413:32;:::i;:::-;1373:77;;;;:::o;1457:126::-;;1535:6;1522:20;1513:29;;1547:31;1572:5;1547:31;:::i;:::-;1507:76;;;;:::o;1590:130::-;;1672:6;1666:13;1657:22;;1684:31;1709:5;1684:31;:::i;:::-;1651:69;;;;:::o;1727:241::-;;1831:2;1819:9;1810:7;1806:23;1802:32;1799:2;;;1847:1;1844;1837:12;1799:2;1882:1;1899:53;1944:7;1935:6;1924:9;1920:22;1899:53;:::i;:::-;1889:63;;1861:97;1793:175;;;;:::o;1975:857::-;;;;;;;2158:3;2146:9;2137:7;2133:23;2129:33;2126:2;;;2175:1;2172;2165:12;2126:2;2210:1;2227:53;2272:7;2263:6;2252:9;2248:22;2227:53;:::i;:::-;2217:63;;2189:97;2317:2;2335:53;2380:7;2371:6;2360:9;2356:22;2335:53;:::i;:::-;2325:63;;2296:98;2425:2;2443:53;2488:7;2479:6;2468:9;2464:22;2443:53;:::i;:::-;2433:63;;2404:98;2533:2;2551:51;2594:7;2585:6;2574:9;2570:22;2551:51;:::i;:::-;2541:61;;2512:96;2639:3;2658:52;2702:7;2693:6;2682:9;2678:22;2658:52;:::i;:::-;2648:62;;2618:98;2747:3;2766:50;2808:7;2799:6;2788:9;2784:22;2766:50;:::i;:::-;2756:60;;2726:96;2120:712;;;;;;;;:::o;2839:257::-;;2951:2;2939:9;2930:7;2926:23;2922:32;2919:2;;;2967:1;2964;2957:12;2919:2;3002:1;3019:61;3072:7;3063:6;3052:9;3048:22;3019:61;:::i;:::-;3009:71;;2981:105;2913:183;;;;:::o;3103:241::-;;3207:2;3195:9;3186:7;3182:23;3178:32;3175:2;;;3223:1;3220;3213:12;3175:2;3258:1;3275:53;3320:7;3311:6;3300:9;3296:22;3275:53;:::i;:::-;3265:63;;3237:97;3169:175;;;;:::o;3351:263::-;;3466:2;3454:9;3445:7;3441:23;3437:32;3434:2;;;3482:1;3479;3472:12;3434:2;3517:1;3534:64;3590:7;3581:6;3570:9;3566:22;3534:64;:::i;:::-;3524:74;;3496:108;3428:186;;;;:::o;3621:485::-;;;;3756:2;3744:9;3735:7;3731:23;3727:32;3724:2;;;3772:1;3769;3762:12;3724:2;3807:1;3824:53;3869:7;3860:6;3849:9;3845:22;3824:53;:::i;:::-;3814:63;;3786:97;3914:2;3932:51;3975:7;3966:6;3955:9;3951:22;3932:51;:::i;:::-;3922:61;;3893:96;4020:2;4038:52;4082:7;4073:6;4062:9;4058:22;4038:52;:::i;:::-;4028:62;;3999:97;3718:388;;;;;:::o;4113:365::-;;;4236:2;4224:9;4215:7;4211:23;4207:32;4204:2;;;4252:1;4249;4242:12;4204:2;4315:1;4304:9;4300:17;4287:31;4338:18;4330:6;4327:30;4324:2;;;4370:1;4367;4360:12;4324:2;4398:64;4454:7;4445:6;4434:9;4430:22;4398:64;:::i;:::-;4380:82;;;;4266:202;4198:280;;;;;:::o;4485:263::-;;4600:2;4588:9;4579:7;4575:23;4571:32;4568:2;;;4616:1;4613;4606:12;4568:2;4651:1;4668:64;4724:7;4715:6;4704:9;4700:22;4668:64;:::i;:::-;4658:74;;4630:108;4562:186;;;;:::o;4755:239::-;;4858:2;4846:9;4837:7;4833:23;4829:32;4826:2;;;4874:1;4871;4864:12;4826:2;4909:1;4926:52;4970:7;4961:6;4950:9;4946:22;4926:52;:::i;:::-;4916:62;;4888:96;4820:174;;;;:::o;5001:259::-;;5114:2;5102:9;5093:7;5089:23;5085:32;5082:2;;;5130:1;5127;5120:12;5082:2;5165:1;5182:62;5236:7;5227:6;5216:9;5212:22;5182:62;:::i;:::-;5172:72;;5144:106;5076:184;;;;:::o;5268:173::-;;5355:46;5397:3;5389:6;5355:46;:::i;:::-;5430:4;5425:3;5421:14;5407:28;;5348:93;;;;:::o;5449:142::-;5540:45;5579:5;5540:45;:::i;:::-;5535:3;5528:58;5522:69;;:::o;5598:103::-;5671:24;5689:5;5671:24;:::i;:::-;5666:3;5659:37;5653:48;;:::o;5708:113::-;5791:24;5809:5;5791:24;:::i;:::-;5786:3;5779:37;5773:48;;:::o;5859:670::-;;5994:54;6042:5;5994:54;:::i;:::-;6061:76;6130:6;6125:3;6061:76;:::i;:::-;6054:83;;6158:56;6208:5;6158:56;:::i;:::-;6234:7;6262:1;6247:260;6272:6;6269:1;6266:13;6247:260;;;6339:6;6333:13;6360:63;6419:3;6404:13;6360:63;:::i;:::-;6353:70;;6440:60;6493:6;6440:60;:::i;:::-;6430:70;;6304:203;6294:1;6291;6287:9;6282:14;;6247:260;;;6251:14;6520:3;6513:10;;5973:556;;;;;;;:::o;6537:104::-;6614:21;6629:5;6614:21;:::i;:::-;6609:3;6602:34;6596:45;;:::o;6648:113::-;6731:24;6749:5;6731:24;:::i;:::-;6726:3;6719:37;6713:48;;:::o;6768:152::-;6869:45;6889:24;6907:5;6889:24;:::i;:::-;6869:45;:::i;:::-;6864:3;6857:58;6851:69;;:::o;6927:356::-;;7055:38;7087:5;7055:38;:::i;:::-;7105:88;7186:6;7181:3;7105:88;:::i;:::-;7098:95;;7198:52;7243:6;7238:3;7231:4;7224:5;7220:16;7198:52;:::i;:::-;7271:6;7266:3;7262:16;7255:23;;7035:248;;;;;:::o;7290:140::-;7380:44;7418:5;7380:44;:::i;:::-;7375:3;7368:57;7362:68;;:::o;7437:347::-;;7549:39;7582:5;7549:39;:::i;:::-;7600:71;7664:6;7659:3;7600:71;:::i;:::-;7593:78;;7676:52;7721:6;7716:3;7709:4;7702:5;7698:16;7676:52;:::i;:::-;7749:29;7771:6;7749:29;:::i;:::-;7744:3;7740:39;7733:46;;7529:255;;;;;:::o;7792:372::-;;7952:67;8016:2;8011:3;7952:67;:::i;:::-;7945:74;;8052:34;8048:1;8043:3;8039:11;8032:55;8121:5;8116:2;8111:3;8107:12;8100:27;8155:2;8150:3;8146:12;8139:19;;7938:226;;;:::o;8173:318::-;;8333:67;8397:2;8392:3;8333:67;:::i;:::-;8326:74;;8433:20;8429:1;8424:3;8420:11;8413:41;8482:2;8477:3;8473:12;8466:19;;8319:172;;;:::o;8500:324::-;;8660:67;8724:2;8719:3;8660:67;:::i;:::-;8653:74;;8760:26;8756:1;8751:3;8747:11;8740:47;8815:2;8810:3;8806:12;8799:19;;8646:178;;;:::o;8833:381::-;;8993:67;9057:2;9052:3;8993:67;:::i;:::-;8986:74;;9093:34;9089:1;9084:3;9080:11;9073:55;9162:14;9157:2;9152:3;9148:12;9141:36;9205:2;9200:3;9196:12;9189:19;;8979:235;;;:::o;9223:394::-;;9383:67;9447:2;9442:3;9383:67;:::i;:::-;9376:74;;9483:34;9479:1;9474:3;9470:11;9463:55;9552:27;9547:2;9542:3;9538:12;9531:49;9608:2;9603:3;9599:12;9592:19;;9369:248;;;:::o;9626:318::-;;9786:67;9850:2;9845:3;9786:67;:::i;:::-;9779:74;;9886:20;9882:1;9877:3;9873:11;9866:41;9935:2;9930:3;9926:12;9919:19;;9772:172;;;:::o;9953:324::-;;10113:67;10177:2;10172:3;10113:67;:::i;:::-;10106:74;;10213:26;10209:1;10204:3;10200:11;10193:47;10268:2;10263:3;10259:12;10252:19;;10099:178;;;:::o;10286:321::-;;10446:67;10510:2;10505:3;10446:67;:::i;:::-;10439:74;;10546:23;10542:1;10537:3;10533:11;10526:44;10598:2;10593:3;10589:12;10582:19;;10432:175;;;:::o;10616:308::-;;10776:66;10840:1;10835:3;10776:66;:::i;:::-;10769:73;;10875:11;10871:1;10866:3;10862:11;10855:32;10915:2;10910:3;10906:12;10899:19;;10762:162;;;:::o;10933:320::-;;11093:67;11157:2;11152:3;11093:67;:::i;:::-;11086:74;;11193:22;11189:1;11184:3;11180:11;11173:43;11244:2;11239:3;11235:12;11228:19;;11079:174;;;:::o;11262:325::-;;11422:67;11486:2;11481:3;11422:67;:::i;:::-;11415:74;;11522:27;11518:1;11513:3;11509:11;11502:48;11578:2;11573:3;11569:12;11562:19;;11408:179;;;:::o;11596:324::-;;11756:67;11820:2;11815:3;11756:67;:::i;:::-;11749:74;;11856:26;11852:1;11847:3;11843:11;11836:47;11911:2;11906:3;11902:12;11895:19;;11742:178;;;:::o;11929:329::-;;12089:67;12153:2;12148:3;12089:67;:::i;:::-;12082:74;;12189:31;12185:1;12180:3;12176:11;12169:52;12249:2;12244:3;12240:12;12233:19;;12075:183;;;:::o;12267:379::-;;12427:67;12491:2;12486:3;12427:67;:::i;:::-;12420:74;;12527:34;12523:1;12518:3;12514:11;12507:55;12596:12;12591:2;12586:3;12582:12;12575:34;12637:2;12632:3;12628:12;12621:19;;12413:233;;;:::o;12655:375::-;;12815:67;12879:2;12874:3;12815:67;:::i;:::-;12808:74;;12915:34;12911:1;12906:3;12902:11;12895:55;12984:8;12979:2;12974:3;12970:12;12963:30;13021:2;13016:3;13012:12;13005:19;;12801:229;;;:::o;13039:331::-;;13199:67;13263:2;13258:3;13199:67;:::i;:::-;13192:74;;13299:33;13295:1;13290:3;13286:11;13279:54;13361:2;13356:3;13352:12;13345:19;;13185:185;;;:::o;13443:616::-;;13600:4;13595:3;13591:14;13683:4;13676:5;13672:16;13666:23;13735:3;13729:4;13725:14;13718:4;13713:3;13709:14;13702:38;13755:103;13853:4;13839:12;13755:103;:::i;:::-;13747:111;;13620:250;13954:4;13947:5;13943:16;13937:23;13966:61;14021:4;14016:3;14012:14;13998:12;13966:61;:::i;:::-;13880:153;14050:4;14043:11;;13573:486;;;;;:::o;14066:113::-;14149:24;14167:5;14149:24;:::i;:::-;14144:3;14137:37;14131:48;;:::o;14186:100::-;14257:23;14274:5;14257:23;:::i;:::-;14252:3;14245:36;14239:47;;:::o;14293:110::-;14374:23;14391:5;14374:23;:::i;:::-;14369:3;14362:36;14356:47;;:::o;14410:107::-;14489:22;14505:5;14489:22;:::i;:::-;14484:3;14477:35;14471:46;;:::o;14524:144::-;14621:41;14639:22;14655:5;14639:22;:::i;:::-;14621:41;:::i;:::-;14616:3;14609:54;14603:65;;:::o;14675:271::-;;14828:93;14917:3;14908:6;14828:93;:::i;:::-;14821:100;;14938:3;14931:10;;14809:137;;;;:::o;14953:383::-;;15105:71;15172:3;15163:6;15105:71;:::i;:::-;15198:1;15193:3;15189:11;15182:18;;15211:75;15282:3;15273:6;15211:75;:::i;:::-;15308:2;15303:3;15299:12;15292:19;;15328:3;15321:10;;15093:243;;;;;:::o;15343:222::-;;15470:2;15459:9;15455:18;15447:26;;15484:71;15552:1;15541:9;15537:17;15528:6;15484:71;:::i;:::-;15441:124;;;;:::o;15572:238::-;;15707:2;15696:9;15692:18;15684:26;;15721:79;15797:1;15786:9;15782:17;15773:6;15721:79;:::i;:::-;15678:132;;;;:::o;15817:349::-;;15980:2;15969:9;15965:18;15957:26;;15994:79;16070:1;16059:9;16055:17;16046:6;15994:79;:::i;:::-;16084:72;16152:2;16141:9;16137:18;16128:6;16084:72;:::i;:::-;15951:215;;;;;:::o;16173:444::-;;16356:2;16345:9;16341:18;16333:26;;16370:71;16438:1;16427:9;16423:17;16414:6;16370:71;:::i;:::-;16452:72;16520:2;16509:9;16505:18;16496:6;16452:72;:::i;:::-;16535;16603:2;16592:9;16588:18;16579:6;16535:72;:::i;:::-;16327:290;;;;;;:::o;16624:333::-;;16779:2;16768:9;16764:18;16756:26;;16793:71;16861:1;16850:9;16846:17;16837:6;16793:71;:::i;:::-;16875:72;16943:2;16932:9;16928:18;16919:6;16875:72;:::i;:::-;16750:207;;;;;:::o;16964:210::-;;17085:2;17074:9;17070:18;17062:26;;17099:65;17161:1;17150:9;17146:17;17137:6;17099:65;:::i;:::-;17056:118;;;;:::o;17181:548::-;;17388:3;17377:9;17373:19;17365:27;;17403:71;17471:1;17460:9;17456:17;17447:6;17403:71;:::i;:::-;17485:68;17549:2;17538:9;17534:18;17525:6;17485:68;:::i;:::-;17564:72;17632:2;17621:9;17617:18;17608:6;17564:72;:::i;:::-;17647;17715:2;17704:9;17700:18;17691:6;17647:72;:::i;:::-;17359:370;;;;;;;:::o;17736:310::-;;17883:2;17872:9;17868:18;17860:26;;17933:9;17927:4;17923:20;17919:1;17908:9;17904:17;17897:47;17958:78;18031:4;18022:6;17958:78;:::i;:::-;17950:86;;17854:192;;;;:::o;18053:416::-;;18253:2;18242:9;18238:18;18230:26;;18303:9;18297:4;18293:20;18289:1;18278:9;18274:17;18267:47;18328:131;18454:4;18328:131;:::i;:::-;18320:139;;18224:245;;;:::o;18476:416::-;;18676:2;18665:9;18661:18;18653:26;;18726:9;18720:4;18716:20;18712:1;18701:9;18697:17;18690:47;18751:131;18877:4;18751:131;:::i;:::-;18743:139;;18647:245;;;:::o;18899:416::-;;19099:2;19088:9;19084:18;19076:26;;19149:9;19143:4;19139:20;19135:1;19124:9;19120:17;19113:47;19174:131;19300:4;19174:131;:::i;:::-;19166:139;;19070:245;;;:::o;19322:416::-;;19522:2;19511:9;19507:18;19499:26;;19572:9;19566:4;19562:20;19558:1;19547:9;19543:17;19536:47;19597:131;19723:4;19597:131;:::i;:::-;19589:139;;19493:245;;;:::o;19745:416::-;;19945:2;19934:9;19930:18;19922:26;;19995:9;19989:4;19985:20;19981:1;19970:9;19966:17;19959:47;20020:131;20146:4;20020:131;:::i;:::-;20012:139;;19916:245;;;:::o;20168:416::-;;20368:2;20357:9;20353:18;20345:26;;20418:9;20412:4;20408:20;20404:1;20393:9;20389:17;20382:47;20443:131;20569:4;20443:131;:::i;:::-;20435:139;;20339:245;;;:::o;20591:416::-;;20791:2;20780:9;20776:18;20768:26;;20841:9;20835:4;20831:20;20827:1;20816:9;20812:17;20805:47;20866:131;20992:4;20866:131;:::i;:::-;20858:139;;20762:245;;;:::o;21014:416::-;;21214:2;21203:9;21199:18;21191:26;;21264:9;21258:4;21254:20;21250:1;21239:9;21235:17;21228:47;21289:131;21415:4;21289:131;:::i;:::-;21281:139;;21185:245;;;:::o;21437:416::-;;21637:2;21626:9;21622:18;21614:26;;21687:9;21681:4;21677:20;21673:1;21662:9;21658:17;21651:47;21712:131;21838:4;21712:131;:::i;:::-;21704:139;;21608:245;;;:::o;21860:416::-;;22060:2;22049:9;22045:18;22037:26;;22110:9;22104:4;22100:20;22096:1;22085:9;22081:17;22074:47;22135:131;22261:4;22135:131;:::i;:::-;22127:139;;22031:245;;;:::o;22283:416::-;;22483:2;22472:9;22468:18;22460:26;;22533:9;22527:4;22523:20;22519:1;22508:9;22504:17;22497:47;22558:131;22684:4;22558:131;:::i;:::-;22550:139;;22454:245;;;:::o;22706:416::-;;22906:2;22895:9;22891:18;22883:26;;22956:9;22950:4;22946:20;22942:1;22931:9;22927:17;22920:47;22981:131;23107:4;22981:131;:::i;:::-;22973:139;;22877:245;;;:::o;23129:416::-;;23329:2;23318:9;23314:18;23306:26;;23379:9;23373:4;23369:20;23365:1;23354:9;23350:17;23343:47;23404:131;23530:4;23404:131;:::i;:::-;23396:139;;23300:245;;;:::o;23552:416::-;;23752:2;23741:9;23737:18;23729:26;;23802:9;23796:4;23792:20;23788:1;23777:9;23773:17;23766:47;23827:131;23953:4;23827:131;:::i;:::-;23819:139;;23723:245;;;:::o;23975:416::-;;24175:2;24164:9;24160:18;24152:26;;24225:9;24219:4;24215:20;24211:1;24200:9;24196:17;24189:47;24250:131;24376:4;24250:131;:::i;:::-;24242:139;;24146:245;;;:::o;24398:416::-;;24598:2;24587:9;24583:18;24575:26;;24648:9;24642:4;24638:20;24634:1;24623:9;24619:17;24612:47;24673:131;24799:4;24673:131;:::i;:::-;24665:139;;24569:245;;;:::o;24821:382::-;;25004:2;24993:9;24989:18;24981:26;;25054:9;25048:4;25044:20;25040:1;25029:9;25025:17;25018:47;25079:114;25188:4;25179:6;25079:114;:::i;:::-;25071:122;;24975:228;;;;:::o;25210:218::-;;25335:2;25324:9;25320:18;25312:26;;25349:69;25415:1;25404:9;25400:17;25391:6;25349:69;:::i;:::-;25306:122;;;;:::o;25435:325::-;;25586:2;25575:9;25571:18;25563:26;;25600:69;25666:1;25655:9;25651:17;25642:6;25600:69;:::i;:::-;25680:70;25746:2;25735:9;25731:18;25722:6;25680:70;:::i;:::-;25557:203;;;;;:::o;25767:428::-;;25942:2;25931:9;25927:18;25919:26;;25956:67;26020:1;26009:9;26005:17;25996:6;25956:67;:::i;:::-;26034:72;26102:2;26091:9;26087:18;26078:6;26034:72;:::i;:::-;26117:68;26181:2;26170:9;26166:18;26157:6;26117:68;:::i;:::-;25913:282;;;;;;:::o;26202:774::-;;26466:3;26455:9;26451:19;26443:27;;26481:67;26545:1;26534:9;26530:17;26521:6;26481:67;:::i;:::-;26559:68;26623:2;26612:9;26608:18;26599:6;26559:68;:::i;:::-;26638:79;26713:2;26702:9;26698:18;26689:6;26638:79;:::i;:::-;26728:72;26796:2;26785:9;26781:18;26772:6;26728:72;:::i;:::-;26811:73;26879:3;26868:9;26864:19;26855:6;26811:73;:::i;:::-;26895:71;26961:3;26950:9;26946:19;26937:6;26895:71;:::i;:::-;26437:539;;;;;;;;;:::o;26983:752::-;;27236:3;27225:9;27221:19;27213:27;;27251:67;27315:1;27304:9;27300:17;27291:6;27251:67;:::i;:::-;27329:68;27393:2;27382:9;27378:18;27369:6;27329:68;:::i;:::-;27408;27472:2;27461:9;27457:18;27448:6;27408:68;:::i;:::-;27487:72;27555:2;27544:9;27540:18;27531:6;27487:72;:::i;:::-;27570:73;27638:3;27627:9;27623:19;27614:6;27570:73;:::i;:::-;27654:71;27720:3;27709:9;27705:19;27696:6;27654:71;:::i;:::-;27207:528;;;;;;;;;:::o;27742:151::-;;27828:3;27820:11;;27866:4;27861:3;27857:14;27849:22;;27814:79;;;:::o;27900:137::-;;28009:5;28003:12;27993:22;;27974:63;;;:::o;28044:121::-;;28137:5;28131:12;28121:22;;28102:63;;;:::o;28172:122::-;;28266:5;28260:12;28250:22;;28231:63;;;:::o;28301:108::-;;28399:4;28394:3;28390:14;28382:22;;28376:33;;;:::o;28417:168::-;;28537:6;28532:3;28525:19;28574:4;28569:3;28565:14;28550:29;;28518:67;;;;:::o;28594:144::-;;28729:3;28714:18;;28707:31;;;;:::o;28747:163::-;;28862:6;28857:3;28850:19;28899:4;28894:3;28890:14;28875:29;;28843:67;;;;:::o;28918:91::-;;28980:24;28998:5;28980:24;:::i;:::-;28969:35;;28963:46;;;:::o;29016:85::-;;29089:5;29082:13;29075:21;29064:32;;29058:43;;;:::o;29108:72::-;;29170:5;29159:16;;29153:27;;;:::o;29187:121::-;;29260:42;29253:5;29249:54;29238:65;;29232:76;;;:::o;29315:72::-;;29377:5;29366:16;;29360:27;;;:::o;29394:88::-;;29466:10;29459:5;29455:22;29444:33;;29438:44;;;:::o;29489:81::-;;29560:4;29553:5;29549:16;29538:27;;29532:38;;;:::o;29577:129::-;;29664:37;29695:5;29664:37;:::i;:::-;29651:50;;29645:61;;;:::o;29713:113::-;;29799:22;29815:5;29799:22;:::i;:::-;29786:35;;29780:46;;;:::o;29833:121::-;;29912:37;29943:5;29912:37;:::i;:::-;29899:50;;29893:61;;;:::o;29961:108::-;;30040:24;30058:5;30040:24;:::i;:::-;30027:37;;30021:48;;;:::o;30077:268::-;30142:1;30149:101;30163:6;30160:1;30157:13;30149:101;;;30239:1;30234:3;30230:11;30224:18;30220:1;30215:3;30211:11;30204:39;30185:2;30182:1;30178:10;30173:15;;30149:101;;;30265:6;30262:1;30259:13;30256:2;;;30330:1;30321:6;30316:3;30312:16;30305:27;30256:2;30126:219;;;;:::o;30353:74::-;;30417:5;30406:16;;30400:27;;;:::o;30434:88::-;;30496:21;30511:5;30496:21;:::i;:::-;30485:32;;30479:43;;;:::o;30529:97::-;;30617:2;30613:7;30608:2;30601:5;30597:14;30593:28;30583:38;;30577:49;;;:::o;30634:96::-;;30714:5;30709:3;30705:15;30683:37;;30677:53;;;:::o;30738:117::-;30807:24;30825:5;30807:24;:::i;:::-;30800:5;30797:35;30787:2;;30846:1;30843;30836:12;30787:2;30781:74;:::o;30862:111::-;30928:21;30943:5;30928:21;:::i;:::-;30921:5;30918:32;30908:2;;30964:1;30961;30954:12;30908:2;30902:71;:::o;30980:117::-;31049:24;31067:5;31049:24;:::i;:::-;31042:5;31039:35;31029:2;;31088:1;31085;31078:12;31029:2;31023:74;:::o;31104:117::-;31173:24;31191:5;31173:24;:::i;:::-;31166:5;31163:35;31153:2;;31212:1;31209;31202:12;31153:2;31147:74;:::o;31228:115::-;31296:23;31313:5;31296:23;:::i;:::-;31289:5;31286:34;31276:2;;31334:1;31331;31324:12;31276:2;31270:73;:::o;31350:113::-;31417:22;31433:5;31417:22;:::i;:::-;31410:5;31407:33;31397:2;;31454:1;31451;31444:12;31397:2;31391:72;:::o", - "source": "// contracts/Wormhole.sol\n// SPDX-License-Identifier: Apache 2\n\n// TODO(hendrik): switch-over feature\n\npragma solidity ^0.6.0;\npragma experimental ABIEncoderV2;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\";\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\nimport \"./BytesLib.sol\";\nimport \"./WrappedAsset.sol\";\n\ncontract Wormhole is ReentrancyGuard {\n using SafeERC20 for IERC20;\n using BytesLib for bytes;\n using SafeMath for uint256;\n\n uint64 constant MAX_UINT64 = 18_446_744_073_709_551_615;\n\n // Address of the Wrapped asset template\n address public wrappedAssetMaster;\n\n // Chain ID of Ethereum\n uint8 CHAIN_ID = 2;\n\n // Address of the official WETH contract\n address constant WETHAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;\n\n struct GuardianSet {\n address[] keys;\n uint32 expiration_time;\n }\n\n event LogGuardianSetChanged(\n uint32 oldGuardianIndex,\n uint32 newGuardianIndex\n );\n\n event LogTokensLocked(\n uint8 target_chain,\n uint8 token_chain,\n uint8 token_decimals,\n bytes32 indexed token,\n bytes32 indexed sender,\n bytes32 recipient,\n uint256 amount,\n uint32 nonce\n );\n\n // Mapping of guardian_set_index => guardian set\n mapping(uint32 => GuardianSet) public guardian_sets;\n // Current active guardian set\n uint32 public guardian_set_index;\n\n // Period for which a guardian set stays active after it has been replaced\n uint32 public guardian_set_expirity;\n\n // Mapping of already consumedVAAs\n mapping(bytes32 => bool) public consumedVAAs;\n\n // Mapping of wrapped asset ERC20 contracts\n mapping(bytes32 => address) public wrappedAssets;\n mapping(address => bool) public isWrappedAsset;\n\n constructor(GuardianSet memory initial_guardian_set, address wrapped_asset_master, uint32 _guardian_set_expirity) public {\n guardian_sets[0] = initial_guardian_set;\n // Explicitly set for doc purposes\n guardian_set_index = 0;\n guardian_set_expirity = _guardian_set_expirity;\n\n wrappedAssetMaster = wrapped_asset_master;\n }\n\n function getGuardianSet(uint32 idx) view public returns (GuardianSet memory gs) {\n return guardian_sets[idx];\n }\n\n function submitVAA(\n bytes calldata vaa\n ) public nonReentrant {\n uint8 version = vaa.toUint8(0);\n require(version == 1, \"VAA version incompatible\");\n\n // Load 4 bytes starting from index 1\n uint32 vaa_guardian_set_index = vaa.toUint32(1);\n\n uint256 len_signers = vaa.toUint8(5);\n uint offset = 6 + 66 * len_signers;\n\n // Load 4 bytes timestamp\n //uint32 timestamp = vaa.toUint32(offset);\n\n // Hash the body\n bytes32 hash = keccak256(vaa.slice(offset, vaa.length - offset));\n require(!consumedVAAs[hash], \"VAA was already executed\");\n\n GuardianSet memory guardian_set = guardian_sets[vaa_guardian_set_index];\n require(guardian_set.expiration_time == 0 || guardian_set.expiration_time > block.timestamp, \"guardian set has expired\");\n require(((guardian_set.keys.length / 4) * 3) + 1 <= len_signers, \"no quorum\");\n\n for (uint i = 0; i < len_signers; i++) {\n uint8 index = vaa.toUint8(6 + i * 66);\n bytes32 r = vaa.toBytes32(7 + i * 66);\n bytes32 s = vaa.toBytes32(39 + i * 66);\n uint8 v = vaa.toUint8(71 + i * 66);\n v += 27;\n require(ecrecover(hash, v, r, s) == guardian_set.keys[index], \"VAA signature invalid\");\n }\n\n uint8 action = vaa.toUint8(offset + 4);\n bytes memory payload = vaa.slice(offset + 5, vaa.length - (offset + 5));\n\n // Process VAA\n if (action == 0x01) {\n require(vaa_guardian_set_index == guardian_set_index, \"only the current guardian set can change the guardian set\");\n vaaUpdateGuardianSet(payload);\n } else if (action == 0x10) {\n vaaTransfer(payload);\n } else {\n revert(\"invalid VAA action\");\n }\n\n // Set the VAA as consumed\n consumedVAAs[hash] = true;\n }\n\n function vaaUpdateGuardianSet(bytes memory data) private {\n uint32 new_guardian_set_index = data.toUint32(0);\n uint8 len = data.toUint8(4);\n\n address[] memory new_guardians = new address[](len);\n for (uint i = 0; i < len; i++) {\n address addr = data.toAddress(5 + i * 20);\n new_guardians[i] = addr;\n }\n\n uint32 old_guardian_set_index = guardian_set_index;\n guardian_set_index = new_guardian_set_index;\n\n GuardianSet memory new_guardian_set = GuardianSet(new_guardians, 0);\n guardian_sets[guardian_set_index] = new_guardian_set;\n guardian_sets[old_guardian_set_index].expiration_time = uint32(block.timestamp) + guardian_set_expirity;\n\n emit LogGuardianSetChanged(old_guardian_set_index, guardian_set_index);\n }\n\n function vaaTransfer(bytes memory data) private {\n //uint32 nonce = data.toUint64(0);\n uint8 source_chain = data.toUint8(4);\n\n uint8 target_chain = data.toUint8(5);\n //bytes32 source_address = data.toBytes32(6);\n //bytes32 target_address = data.toBytes32(38);\n address target_address = data.toAddress(38 + 12);\n\n uint8 token_chain = data.toUint8(70);\n //bytes32 token_address = data.toBytes32(71);\n uint256 amount = data.toUint256(104);\n\n require(source_chain != target_chain, \"same chain transfers are not supported\");\n require(target_chain == CHAIN_ID, \"transfer must be incoming\");\n\n if (token_chain != CHAIN_ID) {\n bytes32 token_address = data.toBytes32(71);\n bytes32 asset_id = keccak256(abi.encodePacked(token_chain, token_address));\n\n // if yes: mint to address\n // if no: create and mint\n address wrapped_asset = wrappedAssets[asset_id];\n if (wrapped_asset == address(0)) {\n uint8 asset_decimals = data.toUint8(103);\n wrapped_asset = deployWrappedAsset(asset_id, token_chain, token_address, asset_decimals);\n }\n\n WrappedAsset(wrapped_asset).mint(target_address, amount);\n } else {\n address token_address = data.toAddress(71 + 12);\n\n IERC20(token_address).safeTransfer(target_address, amount);\n }\n }\n\n function deployWrappedAsset(bytes32 seed, uint8 token_chain, bytes32 token_address, uint8 decimals) private returns (address asset){\n // Taken from https://github.com/OpenZeppelin/openzeppelin-sdk/blob/master/packages/lib/contracts/upgradeability/ProxyFactory.sol\n // Licensed under MIT\n bytes20 targetBytes = bytes20(wrappedAssetMaster);\n assembly {\n let clone := mload(0x40)\n mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(clone, 0x14), targetBytes)\n mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n asset := create2(0, clone, 0x37, seed)\n }\n\n // Call initializer\n WrappedAsset(asset).initialize(token_chain, token_address, decimals);\n\n // Store address\n wrappedAssets[seed] = asset;\n isWrappedAsset[asset] = true;\n }\n\n function lockAssets(\n address asset,\n uint256 amount,\n bytes32 recipient,\n uint8 target_chain,\n uint32 nonce,\n bool refund_dust\n ) public nonReentrant {\n require(amount != 0, \"amount must not be 0\");\n\n uint8 asset_chain = CHAIN_ID;\n bytes32 asset_address;\n uint8 decimals = ERC20(asset).decimals();\n\n if (isWrappedAsset[asset]) {\n WrappedAsset(asset).burn(msg.sender, amount);\n asset_chain = WrappedAsset(asset).assetChain();\n asset_address = WrappedAsset(asset).assetAddress();\n } else {\n uint256 balanceBefore = IERC20(asset).balanceOf(address(this));\n IERC20(asset).safeTransferFrom(msg.sender, address(this), amount);\n uint256 balanceAfter = IERC20(asset).balanceOf(address(this));\n\n // The amount that was transferred in is the delta between balance before and after the transfer.\n // This is to properly handle tokens that charge a fee on transfer.\n amount = balanceAfter.sub(balanceBefore);\n\n // Decimal adjust amount - we keep the dust\n if (decimals > 9) {\n uint256 original_amount = amount;\n amount = amount.div(10 ** uint256(decimals - 9));\n\n if (refund_dust) {\n ERC20(asset).transfer(msg.sender, original_amount.mod(10 ** uint256(decimals - 9)));\n }\n\n decimals = 9;\n }\n\n require(balanceAfter.div(10 ** uint256(ERC20(asset).decimals() - 9)) <= MAX_UINT64, \"bridge balance would exceed maximum\");\n\n asset_address = bytes32(uint256(asset));\n }\n\n emit LogTokensLocked(target_chain, asset_chain, decimals, asset_address, bytes32(uint256(msg.sender)), recipient, amount, nonce);\n }\n\n function lockETH(\n bytes32 recipient,\n uint8 target_chain,\n uint32 nonce\n ) public payable nonReentrant {\n require(msg.value != 0, \"amount must not be 0\");\n\n // Wrap tx value in WETH\n WETH(WETHAddress).deposit{value : msg.value}();\n\n // Log deposit of WETH\n emit LogTokensLocked(target_chain, CHAIN_ID, 18, bytes32(uint256(WETHAddress)), bytes32(uint256(msg.sender)), recipient, msg.value, nonce);\n }\n\n fallback() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\n\n receive() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\n}\n\n\ninterface WETH is IERC20 {\n function deposit() external payable;\n\n function withdraw(uint256 amount) external;\n}\n", - "sourcePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol", + "sourceMap": "463:11326:1:-:0;;;793:1;776:18;;;;;;;;;;;;;;;;;;;;2106:360;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1645:1:10;1760:7;:22;;;;2256:20:1;2237:13;:16;2251:1;2237:16;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2350:1;2329:18;;:22;;;;;;;;;;;;;;;;;;2385;2361:21;;:46;;;;;;;;;;;;;;;;;;2439:20;2418:18;;:41;;;;;;;;;;;;;;;;;;2106:360;;;463:11326;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;164:722::-;;292:3;285:4;277:6;273:17;269:27;259:2;;310:1;307;300:12;259:2;340:6;334:13;362:80;377:64;434:6;377:64;:::i;:::-;362:80;:::i;:::-;353:89;;459:5;484:6;477:5;470:21;514:4;506:6;502:17;492:27;;536:4;531:3;527:14;520:21;;589:6;636:3;628:4;620:6;616:17;611:3;607:27;604:36;601:2;;;653:1;650;643:12;601:2;678:1;663:217;688:6;685:1;682:13;663:217;;;746:3;768:48;812:3;800:10;768:48;:::i;:::-;763:3;756:61;840:4;835:3;831:14;824:21;;868:4;863:3;859:14;852:21;;720:160;710:1;707;703:9;698:14;;663:217;;;667:14;252:634;;;;;;;:::o;928:617::-;;1056:4;1044:9;1039:3;1035:19;1031:30;1028:2;;;1074:1;1071;1064:12;1028:2;1092:20;1107:4;1092:20;:::i;:::-;1083:29;;1183:1;1172:9;1168:17;1162:24;1206:18;1198:6;1195:30;1192:2;;;1238:1;1235;1228:12;1192:2;1273:85;1354:3;1345:6;1334:9;1330:22;1273:85;:::i;:::-;1266:4;1259:5;1255:16;1248:111;1122:248;1431:2;1464:59;1519:3;1510:6;1499:9;1495:22;1464:59;:::i;:::-;1457:4;1450:5;1446:16;1439:85;1380:155;1022:523;;;;:::o;1552:132::-;;1635:6;1629:13;1620:22;;1647:32;1673:5;1647:32;:::i;:::-;1614:70;;;;:::o;1691:668::-;;;;1867:2;1855:9;1846:7;1842:23;1838:32;1835:2;;;1883:1;1880;1873:12;1835:2;1939:1;1928:9;1924:17;1918:24;1962:18;1954:6;1951:30;1948:2;;;1994:1;1991;1984:12;1948:2;2014:92;2098:7;2089:6;2078:9;2074:22;2014:92;:::i;:::-;2004:102;;1897:215;2143:2;2161:64;2217:7;2208:6;2197:9;2193:22;2161:64;:::i;:::-;2151:74;;2122:109;2262:2;2280:63;2335:7;2326:6;2315:9;2311:22;2280:63;:::i;:::-;2270:73;;2241:108;1829:530;;;;;:::o;2366:256::-;;2428:2;2422:9;2412:19;;2466:4;2458:6;2454:17;2565:6;2553:10;2550:22;2529:18;2517:10;2514:34;2511:62;2508:2;;;2586:1;2583;2576:12;2508:2;2606:10;2602:2;2595:22;2406:216;;;;:::o;2629:304::-;;2788:18;2780:6;2777:30;2774:2;;;2820:1;2817;2810:12;2774:2;2855:4;2847:6;2843:17;2835:25;;2918:4;2912;2908:15;2900:23;;2711:222;;;:::o;2940:91::-;;3002:24;3020:5;3002:24;:::i;:::-;2991:35;;2985:46;;;:::o;3038:121::-;;3111:42;3104:5;3100:54;3089:65;;3083:76;;;:::o;3166:88::-;;3238:10;3231:5;3227:22;3216:33;;3210:44;;;:::o;3261:117::-;3330:24;3348:5;3330:24;:::i;:::-;3323:5;3320:35;3310:2;;3369:1;3366;3359:12;3310:2;3304:74;:::o;3385:115::-;3453:23;3470:5;3453:23;:::i;:::-;3446:5;3443:34;3433:2;;3491:1;3488;3481:12;3433:2;3427:73;:::o;463:11326:1:-;;;;;;;", + "deployedSourceMap": "463:11326:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11731:54;;;;;;;;;;:::i;:::-;;;;;;;;463:11326;11641:54;;;;;;;;;;:::i;:::-;;;;;;;;2053:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2600:639;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1609:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1819:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10842:764;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3445:1845;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8861:1975;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1701:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;708:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1900:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1999:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2472:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2053:46;;;;;;;;;;;;;;;;;;;;;;:::o;2600:639::-;1688:1:10;2277:7;;:19;;2269:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1688:1;2407:7;:18;;;;2683:27:1::1;;:::i;:::-;2713:22;2731:3;;2713:17;:22::i;:::-;2683:52;;2793:4;2772:10;:17;;;:25;;;2768:383;;;2854:18;;;;;;;;;;;2821:51;;:10;:29;;;:51;;;2813:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;2948:40;2969:10;:18;;;2948:20;:40::i;:::-;2768:383;;;3030:4;3009:10;:17;;;:25;;;3005:146;;;3050:31;3062:10;:18;;;3050:11;:31::i;:::-;3005:146;;;3112:28;;;;;;;;;;:::i;:::-;;;;;;;;3005:146;2768:383;3228:4;3196:12;:29;3209:10;:15;;;3196:29;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;2436:1:10;1645::::0;2580:7;:22;;;;2600:639:1;;:::o;1609:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1819:35::-;;;;;;;;;;;;;:::o;10842:764::-;1688:1:10;2277:7;;:19;;2269:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1688:1;2407:7;:18;;;;11004:8:1::1;;;;;;;;;;;10988:24;;:12;:24;;;;10980:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11063:17;11083:22;11097:7;11083:9;:13;;:22;;;;:::i;:::-;11063:42;;11115:23;11141:22;11155:7;11141:9;:13;;:22;;;;:::i;:::-;11115:48;;11200:1;11181:15;:20;;11173:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11282:10;:19;;:30;11302:9;11282:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;877:42;11356:25;;;11402:9;11390;:21;11356:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;11551:10;11543:19;;11535:28;;877:42;11512:20;;11504:29;;11461:138;11477:12;11491:8;;;;;;;;;;;11501:1;11565:9;11576:15;11593:5;11461:138;;;;;;;;;;;:::i;:::-;;;;;;;;2436:1:10;;1645::::0;2580:7;:22;;;;10842:764:1;;;:::o;3445:1845::-;3513:27;;:::i;:::-;3573:14;3585:1;3573:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;;;:::i;:::-;3552:10;:18;;:35;;;;;;;;;;;3627:1;3605:10;:18;;;:23;;;3597:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;3746:15;3759:1;3746:3;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;;:::i;:::-;3714:10;:29;;:47;;;;;;;;;;;3772:19;3794:14;3806:1;3794:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;;;:::i;:::-;3772:36;;;;3818:11;3841;3836:2;:16;3832:1;:20;3818:34;;3920:20;3933:6;3920:3;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;;:::i;:::-;3897:10;:20;;:43;;;;;;;;;;;4004:38;4014:6;4035;4022:3;;:10;;:19;4004:3;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;:::i;:::-;3994:49;;;;;;3976:10;:15;;:67;;;;;4062:12;:29;4075:10;:15;;;4062:29;;;;;;;;;;;;;;;;;;;;;4061:30;4053:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4131:31;;:::i;:::-;4165:13;:44;4179:10;:29;;;4165:44;;;;;;;;;;;;;;;4131:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4254:1;4227:12;:17;;;:24;:28;4219:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;4330:1;4298:12;:28;;;:33;;;:83;;;;4366:15;4335:12;:28;;;:46;;;4298:83;4290:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;4579:11;4574:1;4569:2;4564:1;4559;4554:2;4527:12;:17;;;:24;:29;:33;;;;;;4526:39;4525:46;;;;;;:50;:65;;4517:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;4615:16;4634:3;4615:22;;4652:6;4647:504;4668:11;4664:1;:15;4647:504;;;4700:11;4714:23;4734:2;4730:1;:6;4726:1;:10;4714:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;4700:37;;4767:10;4759:18;;:5;:18;;;4751:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;4850:5;4844:12;;4831:25;;4871:9;4883:25;4905:2;4901:1;:6;4897:1;:10;4883:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;4871:37;;4922:9;4934:26;4957:2;4953:1;:6;4948:2;:11;4934:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;4922:38;;4974:7;4984:24;5005:2;5001:1;:6;4996:2;:11;4984:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;4974:34;;5027:2;5022:7;;;;5090:12;:17;;;5108:5;5090:24;;;;;;;;;;;;;;;;5051:63;;:35;5061:10;:15;;;5078:1;5081;5084;5051:35;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;5043:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;4647:504;;;;4681:3;;;;;;;4647:504;;;;5181:23;5202:1;5193:6;:10;5181:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;5161:10;:17;;:43;;;;;;;;;;;5235:48;5254:1;5245:6;:10;5280:1;5271:6;:10;5257:3;;:10;;:25;5235:3;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;:::i;:::-;5214:10;:18;;:69;;;;3445:1845;;;;;;;;:::o;8861:1975::-;1688:1:10;2277:7;;:19;;2269:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1688:1;2407:7;:18;;;;9091:8:1::1;;;;;;;;;;;9075:24;;:12;:24;;;;9067:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9150:17;9170:8;;;;;;;;;;;9150:28;;9188:21;9219:14:::0;9242:5:::1;9236:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9219:40;;9274:14;:21;9289:5;9274:21;;;;;;;;;;;;;;;;;;;;;;;;;9270:1317;;;9324:5;9311:24;;;9336:10;9348:6;9311:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9396:5;9383:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9369:46;;9458:5;9445:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9429:50;;9270:1317;;;9510:21;9541:5;9534:23;;;9566:4;9534:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9510:62;;9586:65;9617:10;9637:4;9644:6;9593:5;9586:30;;;;:65;;;;;;:::i;:::-;9665:20;9695:5;9688:23;;;9720:4;9688:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9665:61;;9940:31;9957:13;9940:12;:16;;:31;;;;:::i;:::-;9931:40;;10057:1;10046:8;:12;;;10042:344;;;10078:23;10104:6;10078:32;;10137:39;10173:1;10162:8;:12;10154:21;;10148:2;:27;10137:6;:10;;:39;;;;:::i;:::-;10128:48;;10199:11;10195:146;;;10234:88;10261:10;10273:48;10318:1;10307:8;:12;10299:21;;10293:2;:27;10273:15;:19;;:48;;;;:::i;:::-;10241:5;10234:26;;;;:88;;;;;:::i;:::-;10195:146;10370:1;10359:12;;10042:344;;630:26;10408:74:::0;::::1;:60;10465:1;10445:5;10439:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:27;10431:36;;10425:2;:42;10408:12;:16;;:60;;;;:::i;:::-;:74;;10400:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;10569:5;10561:14;;10553:23;;10537:39;;9270:1317;;;10654:1;10644:6;:11;;10636:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10790:10;10782:19;;10774:28;;10759:13;10706:123;10722:12;10736:11;10749:8;10804:9;10815:6;10823:5;10706:123;;;;;;;;;;;:::i;:::-;;;;;;;;2436:1:10;;;1645::::0;2580:7;:22;;;;8861:1975:1;;;;;;:::o;1701:32::-;;;;;;;;;;;;;:::o;708:33::-;;;;;;;;;;;;;:::o;1900:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;1999:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;2472:122::-;2529:21;;:::i;:::-;2569:13;:18;2583:3;2569:18;;;;;;;;;;;;;;;2562:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2472:122;;;:::o;5296:916::-;5363:29;5395:16;5409:1;5395:4;:13;;:16;;;;:::i;:::-;5363:48;;5476:1;5455:18;;;;;;;;;;;:22;5429:48;;:22;:48;;;5421:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;5525:9;5537:15;5550:1;5537:4;:12;;:15;;;;:::i;:::-;5525:27;;5563:30;5610:3;5596:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5563:51;;5629:6;5624:134;5645:3;5641:7;;:1;:7;5624:134;;;5669:12;5684:26;5707:2;5703:1;:6;5699:1;:10;5684:4;:14;;:26;;;;:::i;:::-;5669:41;;5743:4;5724:13;5738:1;5724:16;;;;;;;;;;;;;:23;;;;;;;;;;;5624:134;5650:3;;;;;;;5624:134;;;;5768:29;5800:18;;;;;;;;;;;5768:50;;5849:22;5828:18;;:43;;;;;;;;;;;;;;;;;;5882:35;;:::i;:::-;5920:29;;;;;;;;5932:13;5920:29;;;;5947:1;5920:29;;;;;5882:67;;5995:16;5959:13;:33;5973:18;;;;;;;;;;;5959:33;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6103:21;;;;;;;;;;;6084:15;6077:47;6021:13;:37;6035:22;6021:37;;;;;;;;;;;;;;;:53;;;:103;;;;;;;;;;;;;;;;;;6140:65;6162:22;6186:18;;;;;;;;;;;6140:65;;;;;;;:::i;:::-;;;;;;;;5296:916;;;;;;:::o;6218:1692::-;6319:18;6340:15;6353:1;6340:4;:12;;:15;;;;:::i;:::-;6319:36;;6366:18;6387:15;6400:1;6387:4;:12;;:15;;;;:::i;:::-;6366:36;;6521:22;6546:23;6561:7;6546:4;:14;;:23;;;;:::i;:::-;6521:48;;6580:17;6600:16;6613:2;6600:4;:12;;:16;;;;:::i;:::-;6580:36;;6680:14;6697:19;6712:3;6697:4;:14;;:19;;;;:::i;:::-;6680:36;;6751:12;6735:28;;:12;:28;;;;6727:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6840:8;;;;;;;;;;;6824:24;;:12;:24;;;6816:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;6908:8;;;;;;;;;;;6893:23;;:11;:23;;;6889:1015;;6932:21;6956:18;6971:2;6956:4;:14;;:18;;;;:::i;:::-;6932:42;;6988:16;7034:11;7047:13;7017:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7007:55;;;;;;6988:74;;7154:21;7178:13;:23;7192:8;7178:23;;;;;;;;;;;;;;;;;;;;;7154:47;;7244:1;7219:27;;:13;:27;;;7215:212;;;7266:20;7289:17;7302:3;7289:4;:12;;:17;;;;:::i;:::-;7266:40;;7340:72;7359:8;7369:11;7382:13;7397:14;7340:18;:72::i;:::-;7324:88;;7215:212;;7454:13;7441:32;;;7474:14;7490:6;7441:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6889:1015;;;;;;7528:21;7552:23;7567:7;7552:4;:14;;:23;;;;:::i;:::-;7528:47;;7590:14;7613:13;7607:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7590:48;;7738:1;7727:8;:12;;;7723:99;;;7768:39;7804:1;7793:8;:12;7785:21;;7779:2;:27;7768:6;:10;;:39;;;;:::i;:::-;7759:48;;7723:99;7835:58;7870:14;7886:6;7842:13;7835:34;;;;:58;;;;;:::i;:::-;6889:1015;;;6218:1692;;;;;;:::o;4820:148:4:-;4878:7;4909:1;4905;:5;4897:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;4960:1;4956;:5;;;;;;4949:12;;4820:148;;;;:::o;4217:150::-;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;4359:1;4355;:5;;;;;;4348:12;;4217:150;;;;:::o;11710:302:0:-;11787:5;11839:1;11830:6;:10;11812:6;:13;:29;;11804:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11874:14;11962:6;11956:3;11948:6;11944:16;11940:29;11934:36;11922:48;;11997:8;11990:15;;;11710:302;;;;:::o;12329:305::-;12407:6;12460:1;12451:6;:10;12433:6;:13;:29;;12425:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12495:15;12584:6;12578:3;12570:6;12566:16;12562:29;12556:36;12544:48;;12619:8;12612:15;;;12329:305;;;;:::o;8865:2480::-;8999:12;9062:7;9053:6;:16;9035:6;:13;:35;;9027:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9104:22;9174:7;9167:15;9200:1;9195:1895;;;;11231:4;11225:11;11212:24;;11282:4;11271:9;11267:20;11261:4;11254:34;9160:2142;;9195:1895;9369:4;9363:11;9350:24;;9996:2;9987:7;9983:16;10362:9;10355:17;10349:4;10345:28;10333:9;10322;10318:25;10314:60;10410:7;10406:2;10402:16;10654:6;10640:9;10633:17;10627:4;10623:28;10611:9;10603:6;10599:22;10595:57;10591:70;10436:417;10687:3;10683:2;10680:11;10436:417;;;10831:2;10825:9;10821:2;10814:21;10728:4;10724:2;10720:13;10714:19;;10768:4;10764:2;10760:13;10754:19;;10436:417;;;10440:239;10889:7;10878:9;10871:26;11071:2;11067:7;11062:2;11058;11054:11;11050:25;11044:4;11037:39;9202:1888;;;9160:2142;;11329:9;11322:16;;;8865:2480;;;;;:::o;13895:319::-;13974:7;14028:2;14019:6;:11;14001:6;:13;:30;;13993:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14064:19;14161:6;14154:4;14146:6;14142:17;14138:30;14132:37;14117:52;;14196:11;14189:18;;;13895:319;;;;:::o;885:203:7:-;985:96;1005:5;1035:27;;;1064:4;1070:2;1074:5;1012:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;985:19;:96::i;:::-;885:203;;;;:::o;3136:155:4:-;3194:7;3226:1;3221;:6;;3213:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;3283:1;3279;:5;3272:12;;3136:155;;;;:::o;704:175:7:-;786:86;806:5;836:23;;;861:2;865:5;813:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;786:19;:86::i;:::-;704:175;;;:::o;11351:353:0:-;11430:7;11484:2;11475:6;:11;11457:6;:13;:30;;11449:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11520:19;11631:27;11621:6;11614:4;11606:6;11602:17;11598:30;11592:37;11588:71;11573:86;;11686:11;11679:18;;;11351:353;;;;:::o;13579:310::-;13658:7;13712:2;13703:6;:11;13685:6;:13;:30;;13677:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13748:16;13839:6;13832:4;13824:6;13820:17;13816:30;13810:37;13798:49;;13874:8;13867:15;;;13579:310;;;;:::o;7916:939:1:-;8033:13;8225:19;8255:18;;;;;;;;;;;8247:27;;8225:49;;8326:4;8320:11;8358:66;8351:5;8344:81;8463:11;8456:4;8449:5;8445:16;8438:37;8513:66;8506:4;8499:5;8495:16;8488:92;8626:4;8620;8613:5;8610:1;8602:29;8593:38;;8293:348;8692:5;8679:30;;;8710:11;8723:13;8738:8;8679:68;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8805:5;8783:13;:19;8797:4;8783:19;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;8844:4;8820:14;:21;8835:5;8820:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;7916:939;;;;;;;:::o;3538:215:4:-;3596:7;3624:1;3619;:6;3615:20;;;3634:1;3627:8;;;;3615:20;3645:9;3661:1;3657;:5;3645:17;;3689:1;3684;3680;:5;;;;;;:10;3672:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3745:1;3738:8;;;3538:215;;;;;:::o;2967:751:7:-;3386:23;3412:69;3440:4;3412:69;;;;;;;;;;;;;;;;;3420:5;3412:27;;;;:69;;;;;:::i;:::-;3386:95;;3515:1;3495:10;:17;:21;3491:221;;;3635:10;3624:30;;;;;;;;;;;;:::i;:::-;3616:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3491:221;2967:751;;;:::o;3581:193:8:-;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3715:21;:52::i;:::-;3708:59;;3581:193;;;;;:::o;4608:523::-;4735:12;4792:5;4767:21;:30;;4759:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;4981:12;4995:23;5022:6;:11;;5042:5;5050:4;5022:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;:::-;5065:59;;;;4608:523;;;;;;:::o;726:413::-;786:4;989:12;1098:7;1086:20;1078:28;;1131:1;1124:4;:8;1117:15;;;726:413;;;:::o;7091:725::-;7206:12;7234:7;7230:580;;;7264:10;7257:17;;;;7230:580;7395:1;7375:10;:17;:21;7371:429;;;7633:10;7627:17;7693:15;7680:10;7676:2;7672:19;7665:44;7582:145;7772:12;7765:20;;;;;;;;;;;:::i;:::-;;;;;;;;7091:725;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:124::-;;219:6;206:20;197:29;;231:30;255:5;231:30;:::i;:::-;191:75;;;;:::o;273:128::-;;354:6;348:13;339:22;;366:30;390:5;366:30;:::i;:::-;333:68;;;;:::o;408:130::-;;488:6;475:20;466:29;;500:33;527:5;500:33;:::i;:::-;460:78;;;;:::o;545:134::-;;629:6;623:13;614:22;;641:33;668:5;641:33;:::i;:::-;608:71;;;;:::o;700:336::-;;;814:3;807:4;799:6;795:17;791:27;781:2;;832:1;829;822:12;781:2;865:6;852:20;842:30;;892:18;884:6;881:30;878:2;;;924:1;921;914:12;878:2;958:4;950:6;946:17;934:29;;1009:3;1001:4;993:6;989:17;979:8;975:32;972:41;969:2;;;1026:1;1023;1016:12;969:2;774:262;;;;;:::o;1044:130::-;;1124:6;1111:20;1102:29;;1136:33;1163:5;1136:33;:::i;:::-;1096:78;;;;:::o;1181:134::-;;1265:6;1259:13;1250:22;;1277:33;1304:5;1277:33;:::i;:::-;1244:71;;;;:::o;1322:128::-;;1401:6;1388:20;1379:29;;1413:32;1439:5;1413:32;:::i;:::-;1373:77;;;;:::o;1457:126::-;;1535:6;1522:20;1513:29;;1547:31;1572:5;1547:31;:::i;:::-;1507:76;;;;:::o;1590:130::-;;1672:6;1666:13;1657:22;;1684:31;1709:5;1684:31;:::i;:::-;1651:69;;;;:::o;1727:241::-;;1831:2;1819:9;1810:7;1806:23;1802:32;1799:2;;;1847:1;1844;1837:12;1799:2;1882:1;1899:53;1944:7;1935:6;1924:9;1920:22;1899:53;:::i;:::-;1889:63;;1861:97;1793:175;;;;:::o;1975:857::-;;;;;;;2158:3;2146:9;2137:7;2133:23;2129:33;2126:2;;;2175:1;2172;2165:12;2126:2;2210:1;2227:53;2272:7;2263:6;2252:9;2248:22;2227:53;:::i;:::-;2217:63;;2189:97;2317:2;2335:53;2380:7;2371:6;2360:9;2356:22;2335:53;:::i;:::-;2325:63;;2296:98;2425:2;2443:53;2488:7;2479:6;2468:9;2464:22;2443:53;:::i;:::-;2433:63;;2404:98;2533:2;2551:51;2594:7;2585:6;2574:9;2570:22;2551:51;:::i;:::-;2541:61;;2512:96;2639:3;2658:52;2702:7;2693:6;2682:9;2678:22;2658:52;:::i;:::-;2648:62;;2618:98;2747:3;2766:50;2808:7;2799:6;2788:9;2784:22;2766:50;:::i;:::-;2756:60;;2726:96;2120:712;;;;;;;;:::o;2839:257::-;;2951:2;2939:9;2930:7;2926:23;2922:32;2919:2;;;2967:1;2964;2957:12;2919:2;3002:1;3019:61;3072:7;3063:6;3052:9;3048:22;3019:61;:::i;:::-;3009:71;;2981:105;2913:183;;;;:::o;3103:241::-;;3207:2;3195:9;3186:7;3182:23;3178:32;3175:2;;;3223:1;3220;3213:12;3175:2;3258:1;3275:53;3320:7;3311:6;3300:9;3296:22;3275:53;:::i;:::-;3265:63;;3237:97;3169:175;;;;:::o;3351:263::-;;3466:2;3454:9;3445:7;3441:23;3437:32;3434:2;;;3482:1;3479;3472:12;3434:2;3517:1;3534:64;3590:7;3581:6;3570:9;3566:22;3534:64;:::i;:::-;3524:74;;3496:108;3428:186;;;;:::o;3621:485::-;;;;3756:2;3744:9;3735:7;3731:23;3727:32;3724:2;;;3772:1;3769;3762:12;3724:2;3807:1;3824:53;3869:7;3860:6;3849:9;3845:22;3824:53;:::i;:::-;3814:63;;3786:97;3914:2;3932:51;3975:7;3966:6;3955:9;3951:22;3932:51;:::i;:::-;3922:61;;3893:96;4020:2;4038:52;4082:7;4073:6;4062:9;4058:22;4038:52;:::i;:::-;4028:62;;3999:97;3718:388;;;;;:::o;4113:365::-;;;4236:2;4224:9;4215:7;4211:23;4207:32;4204:2;;;4252:1;4249;4242:12;4204:2;4315:1;4304:9;4300:17;4287:31;4338:18;4330:6;4327:30;4324:2;;;4370:1;4367;4360:12;4324:2;4398:64;4454:7;4445:6;4434:9;4430:22;4398:64;:::i;:::-;4380:82;;;;4266:202;4198:280;;;;;:::o;4485:263::-;;4600:2;4588:9;4579:7;4575:23;4571:32;4568:2;;;4616:1;4613;4606:12;4568:2;4651:1;4668:64;4724:7;4715:6;4704:9;4700:22;4668:64;:::i;:::-;4658:74;;4630:108;4562:186;;;;:::o;4755:239::-;;4858:2;4846:9;4837:7;4833:23;4829:32;4826:2;;;4874:1;4871;4864:12;4826:2;4909:1;4926:52;4970:7;4961:6;4950:9;4946:22;4926:52;:::i;:::-;4916:62;;4888:96;4820:174;;;;:::o;5001:259::-;;5114:2;5102:9;5093:7;5089:23;5085:32;5082:2;;;5130:1;5127;5120:12;5082:2;5165:1;5182:62;5236:7;5227:6;5216:9;5212:22;5182:62;:::i;:::-;5172:72;;5144:106;5076:184;;;;:::o;5268:173::-;;5355:46;5397:3;5389:6;5355:46;:::i;:::-;5430:4;5425:3;5421:14;5407:28;;5348:93;;;;:::o;5449:142::-;5540:45;5579:5;5540:45;:::i;:::-;5535:3;5528:58;5522:69;;:::o;5598:103::-;5671:24;5689:5;5671:24;:::i;:::-;5666:3;5659:37;5653:48;;:::o;5708:113::-;5791:24;5809:5;5791:24;:::i;:::-;5786:3;5779:37;5773:48;;:::o;5859:670::-;;5994:54;6042:5;5994:54;:::i;:::-;6061:76;6130:6;6125:3;6061:76;:::i;:::-;6054:83;;6158:56;6208:5;6158:56;:::i;:::-;6234:7;6262:1;6247:260;6272:6;6269:1;6266:13;6247:260;;;6339:6;6333:13;6360:63;6419:3;6404:13;6360:63;:::i;:::-;6353:70;;6440:60;6493:6;6440:60;:::i;:::-;6430:70;;6304:203;6294:1;6291;6287:9;6282:14;;6247:260;;;6251:14;6520:3;6513:10;;5973:556;;;;;;;:::o;6537:104::-;6614:21;6629:5;6614:21;:::i;:::-;6609:3;6602:34;6596:45;;:::o;6648:103::-;6721:24;6739:5;6721:24;:::i;:::-;6716:3;6709:37;6703:48;;:::o;6758:113::-;6841:24;6859:5;6841:24;:::i;:::-;6836:3;6829:37;6823:48;;:::o;6878:152::-;6979:45;6999:24;7017:5;6999:24;:::i;:::-;6979:45;:::i;:::-;6974:3;6967:58;6961:69;;:::o;7037:323::-;;7137:38;7169:5;7137:38;:::i;:::-;7187:60;7240:6;7235:3;7187:60;:::i;:::-;7180:67;;7252:52;7297:6;7292:3;7285:4;7278:5;7274:16;7252:52;:::i;:::-;7325:29;7347:6;7325:29;:::i;:::-;7320:3;7316:39;7309:46;;7117:243;;;;;:::o;7367:356::-;;7495:38;7527:5;7495:38;:::i;:::-;7545:88;7626:6;7621:3;7545:88;:::i;:::-;7538:95;;7638:52;7683:6;7678:3;7671:4;7664:5;7660:16;7638:52;:::i;:::-;7711:6;7706:3;7702:16;7695:23;;7475:248;;;;;:::o;7730:138::-;7819:43;7856:5;7819:43;:::i;:::-;7814:3;7807:56;7801:67;;:::o;7875:347::-;;7987:39;8020:5;7987:39;:::i;:::-;8038:71;8102:6;8097:3;8038:71;:::i;:::-;8031:78;;8114:52;8159:6;8154:3;8147:4;8140:5;8136:16;8114:52;:::i;:::-;8187:29;8209:6;8187:29;:::i;:::-;8182:3;8178:39;8171:46;;7967:255;;;;;:::o;8230:372::-;;8390:67;8454:2;8449:3;8390:67;:::i;:::-;8383:74;;8490:34;8486:1;8481:3;8477:11;8470:55;8559:5;8554:2;8549:3;8545:12;8538:27;8593:2;8588:3;8584:12;8577:19;;8376:226;;;:::o;8611:318::-;;8771:67;8835:2;8830:3;8771:67;:::i;:::-;8764:74;;8871:20;8867:1;8862:3;8858:11;8851:41;8920:2;8915:3;8911:12;8904:19;;8757:172;;;:::o;8938:324::-;;9098:67;9162:2;9157:3;9098:67;:::i;:::-;9091:74;;9198:26;9194:1;9189:3;9185:11;9178:47;9253:2;9248:3;9244:12;9237:19;;9084:178;;;:::o;9271:381::-;;9431:67;9495:2;9490:3;9431:67;:::i;:::-;9424:74;;9531:34;9527:1;9522:3;9518:11;9511:55;9600:14;9595:2;9590:3;9586:12;9579:36;9643:2;9638:3;9634:12;9627:19;;9417:235;;;:::o;9661:330::-;;9821:67;9885:2;9880:3;9821:67;:::i;:::-;9814:74;;9921:32;9917:1;9912:3;9908:11;9901:53;9982:2;9977:3;9973:12;9966:19;;9807:184;;;:::o;10000:375::-;;10160:67;10224:2;10219:3;10160:67;:::i;:::-;10153:74;;10260:34;10256:1;10251:3;10247:11;10240:55;10329:8;10324:2;10319:3;10315:12;10308:30;10366:2;10361:3;10357:12;10350:19;;10146:229;;;:::o;10384:394::-;;10544:67;10608:2;10603:3;10544:67;:::i;:::-;10537:74;;10644:34;10640:1;10635:3;10631:11;10624:55;10713:27;10708:2;10703:3;10699:12;10692:49;10769:2;10764:3;10760:12;10753:19;;10530:248;;;:::o;10787:326::-;;10947:67;11011:2;11006:3;10947:67;:::i;:::-;10940:74;;11047:28;11043:1;11038:3;11034:11;11027:49;11104:2;11099:3;11095:12;11088:19;;10933:180;;;:::o;11122:318::-;;11282:67;11346:2;11341:3;11282:67;:::i;:::-;11275:74;;11382:20;11378:1;11373:3;11369:11;11362:41;11431:2;11426:3;11422:12;11415:19;;11268:172;;;:::o;11449:324::-;;11609:67;11673:2;11668:3;11609:67;:::i;:::-;11602:74;;11709:26;11705:1;11700:3;11696:11;11689:47;11764:2;11759:3;11755:12;11748:19;;11595:178;;;:::o;11782:324::-;;11942:67;12006:2;12001:3;11942:67;:::i;:::-;11935:74;;12042:26;12038:1;12033:3;12029:11;12022:47;12097:2;12092:3;12088:12;12081:19;;11928:178;;;:::o;12115:372::-;;12275:67;12339:2;12334:3;12275:67;:::i;:::-;12268:74;;12375:34;12371:1;12366:3;12362:11;12355:55;12444:5;12439:2;12434:3;12430:12;12423:27;12478:2;12473:3;12469:12;12462:19;;12261:226;;;:::o;12496:321::-;;12656:67;12720:2;12715:3;12656:67;:::i;:::-;12649:74;;12756:23;12752:1;12747:3;12743:11;12736:44;12808:2;12803:3;12799:12;12792:19;;12642:175;;;:::o;12826:370::-;;12986:67;13050:2;13045:3;12986:67;:::i;:::-;12979:74;;13086:34;13082:1;13077:3;13073:11;13066:55;13155:3;13150:2;13145:3;13141:12;13134:25;13187:2;13182:3;13178:12;13171:19;;12972:224;;;:::o;13205:330::-;;13365:67;13429:2;13424:3;13365:67;:::i;:::-;13358:74;;13465:32;13461:1;13456:3;13452:11;13445:53;13526:2;13521:3;13517:12;13510:19;;13351:184;;;:::o;13544:370::-;;13704:67;13768:2;13763:3;13704:67;:::i;:::-;13697:74;;13804:34;13800:1;13795:3;13791:11;13784:55;13873:3;13868:2;13863:3;13859:12;13852:25;13905:2;13900:3;13896:12;13889:19;;13690:224;;;:::o;13923:308::-;;14083:66;14147:1;14142:3;14083:66;:::i;:::-;14076:73;;14182:11;14178:1;14173:3;14169:11;14162:32;14222:2;14217:3;14213:12;14206:19;;14069:162;;;:::o;14240:325::-;;14400:67;14464:2;14459:3;14400:67;:::i;:::-;14393:74;;14500:27;14496:1;14491:3;14487:11;14480:48;14556:2;14551:3;14547:12;14540:19;;14386:179;;;:::o;14574:324::-;;14734:67;14798:2;14793:3;14734:67;:::i;:::-;14727:74;;14834:26;14830:1;14825:3;14821:11;14814:47;14889:2;14884:3;14880:12;14873:19;;14720:178;;;:::o;14907:329::-;;15067:67;15131:2;15126:3;15067:67;:::i;:::-;15060:74;;15167:31;15163:1;15158:3;15154:11;15147:52;15227:2;15222:3;15218:12;15211:19;;15053:183;;;:::o;15245:372::-;;15405:67;15469:2;15464:3;15405:67;:::i;:::-;15398:74;;15505:34;15501:1;15496:3;15492:11;15485:55;15574:5;15569:2;15564:3;15560:12;15553:27;15608:2;15603:3;15599:12;15592:19;;15391:226;;;:::o;15626:379::-;;15786:67;15850:2;15845:3;15786:67;:::i;:::-;15779:74;;15886:34;15882:1;15877:3;15873:11;15866:55;15955:12;15950:2;15945:3;15941:12;15934:34;15996:2;15991:3;15987:12;15980:19;;15772:233;;;:::o;16014:375::-;;16174:67;16238:2;16233:3;16174:67;:::i;:::-;16167:74;;16274:34;16270:1;16265:3;16261:11;16254:55;16343:8;16338:2;16333:3;16329:12;16322:30;16380:2;16375:3;16371:12;16364:19;;16160:229;;;:::o;16398:331::-;;16558:67;16622:2;16617:3;16558:67;:::i;:::-;16551:74;;16658:33;16654:1;16649:3;16645:11;16638:54;16720:2;16715:3;16711:12;16704:19;;16544:185;;;:::o;16738:320::-;;16898:67;16962:2;16957:3;16898:67;:::i;:::-;16891:74;;16998:22;16994:1;16989:3;16985:11;16978:43;17049:2;17044:3;17040:12;17033:19;;16884:174;;;:::o;17131:616::-;;17288:4;17283:3;17279:14;17371:4;17364:5;17360:16;17354:23;17423:3;17417:4;17413:14;17406:4;17401:3;17397:14;17390:38;17443:103;17541:4;17527:12;17443:103;:::i;:::-;17435:111;;17308:250;17642:4;17635:5;17631:16;17625:23;17654:61;17709:4;17704:3;17700:14;17686:12;17654:61;:::i;:::-;17568:153;17738:4;17731:11;;17261:486;;;;;:::o;17815:1202::-;;17968:4;17963:3;17959:14;18054:4;18047:5;18043:16;18037:23;18066:59;18119:4;18114:3;18110:14;18096:12;18066:59;:::i;:::-;17988:143;18204:4;18197:5;18193:16;18187:23;18216:63;18273:4;18268:3;18264:14;18250:12;18216:63;:::i;:::-;18141:144;18372:4;18365:5;18361:16;18355:23;18384:61;18439:4;18434:3;18430:14;18416:12;18384:61;:::i;:::-;18295:156;18529:4;18522:5;18518:16;18512:23;18541:61;18596:4;18591:3;18587:14;18573:12;18541:61;:::i;:::-;18461:147;18683:4;18676:5;18672:16;18666:23;18695:59;18748:4;18743:3;18739:14;18725:12;18695:59;:::i;:::-;18618:142;18836:4;18829:5;18825:16;18819:23;18888:3;18882:4;18878:14;18871:4;18866:3;18862:14;18855:38;18908:71;18974:4;18960:12;18908:71;:::i;:::-;18900:79;;18770:221;19008:4;19001:11;;17941:1076;;;;;:::o;19024:113::-;19107:24;19125:5;19107:24;:::i;:::-;19102:3;19095:37;19089:48;;:::o;19144:100::-;19215:23;19232:5;19215:23;:::i;:::-;19210:3;19203:36;19197:47;;:::o;19251:110::-;19332:23;19349:5;19332:23;:::i;:::-;19327:3;19320:36;19314:47;;:::o;19368:97::-;19437:22;19453:5;19437:22;:::i;:::-;19432:3;19425:35;19419:46;;:::o;19472:107::-;19551:22;19567:5;19551:22;:::i;:::-;19546:3;19539:35;19533:46;;:::o;19586:144::-;19683:41;19701:22;19717:5;19701:22;:::i;:::-;19683:41;:::i;:::-;19678:3;19671:54;19665:65;;:::o;19737:271::-;;19890:93;19979:3;19970:6;19890:93;:::i;:::-;19883:100;;20000:3;19993:10;;19871:137;;;;:::o;20015:383::-;;20167:71;20234:3;20225:6;20167:71;:::i;:::-;20260:1;20255:3;20251:11;20244:18;;20273:75;20344:3;20335:6;20273:75;:::i;:::-;20370:2;20365:3;20361:12;20354:19;;20390:3;20383:10;;20155:243;;;;;:::o;20405:222::-;;20532:2;20521:9;20517:18;20509:26;;20546:71;20614:1;20603:9;20599:17;20590:6;20546:71;:::i;:::-;20503:124;;;;:::o;20634:238::-;;20769:2;20758:9;20754:18;20746:26;;20783:79;20859:1;20848:9;20844:17;20835:6;20783:79;:::i;:::-;20740:132;;;;:::o;20879:349::-;;21042:2;21031:9;21027:18;21019:26;;21056:79;21132:1;21121:9;21117:17;21108:6;21056:79;:::i;:::-;21146:72;21214:2;21203:9;21199:18;21190:6;21146:72;:::i;:::-;21013:215;;;;;:::o;21235:444::-;;21418:2;21407:9;21403:18;21395:26;;21432:71;21500:1;21489:9;21485:17;21476:6;21432:71;:::i;:::-;21514:72;21582:2;21571:9;21567:18;21558:6;21514:72;:::i;:::-;21597;21665:2;21654:9;21650:18;21641:6;21597:72;:::i;:::-;21389:290;;;;;;:::o;21686:333::-;;21841:2;21830:9;21826:18;21818:26;;21855:71;21923:1;21912:9;21908:17;21899:6;21855:71;:::i;:::-;21937:72;22005:2;21994:9;21990:18;21981:6;21937:72;:::i;:::-;21812:207;;;;;:::o;22026:210::-;;22147:2;22136:9;22132:18;22124:26;;22161:65;22223:1;22212:9;22208:17;22199:6;22161:65;:::i;:::-;22118:118;;;;:::o;22243:548::-;;22450:3;22439:9;22435:19;22427:27;;22465:71;22533:1;22522:9;22518:17;22509:6;22465:71;:::i;:::-;22547:68;22611:2;22600:9;22596:18;22587:6;22547:68;:::i;:::-;22626:72;22694:2;22683:9;22679:18;22670:6;22626:72;:::i;:::-;22709;22777:2;22766:9;22762:18;22753:6;22709:72;:::i;:::-;22421:370;;;;;;;:::o;22798:310::-;;22945:2;22934:9;22930:18;22922:26;;22995:9;22989:4;22985:20;22981:1;22970:9;22966:17;22959:47;23020:78;23093:4;23084:6;23020:78;:::i;:::-;23012:86;;22916:192;;;;:::o;23115:416::-;;23315:2;23304:9;23300:18;23292:26;;23365:9;23359:4;23355:20;23351:1;23340:9;23336:17;23329:47;23390:131;23516:4;23390:131;:::i;:::-;23382:139;;23286:245;;;:::o;23538:416::-;;23738:2;23727:9;23723:18;23715:26;;23788:9;23782:4;23778:20;23774:1;23763:9;23759:17;23752:47;23813:131;23939:4;23813:131;:::i;:::-;23805:139;;23709:245;;;:::o;23961:416::-;;24161:2;24150:9;24146:18;24138:26;;24211:9;24205:4;24201:20;24197:1;24186:9;24182:17;24175:47;24236:131;24362:4;24236:131;:::i;:::-;24228:139;;24132:245;;;:::o;24384:416::-;;24584:2;24573:9;24569:18;24561:26;;24634:9;24628:4;24624:20;24620:1;24609:9;24605:17;24598:47;24659:131;24785:4;24659:131;:::i;:::-;24651:139;;24555:245;;;:::o;24807:416::-;;25007:2;24996:9;24992:18;24984:26;;25057:9;25051:4;25047:20;25043:1;25032:9;25028:17;25021:47;25082:131;25208:4;25082:131;:::i;:::-;25074:139;;24978:245;;;:::o;25230:416::-;;25430:2;25419:9;25415:18;25407:26;;25480:9;25474:4;25470:20;25466:1;25455:9;25451:17;25444:47;25505:131;25631:4;25505:131;:::i;:::-;25497:139;;25401:245;;;:::o;25653:416::-;;25853:2;25842:9;25838:18;25830:26;;25903:9;25897:4;25893:20;25889:1;25878:9;25874:17;25867:47;25928:131;26054:4;25928:131;:::i;:::-;25920:139;;25824:245;;;:::o;26076:416::-;;26276:2;26265:9;26261:18;26253:26;;26326:9;26320:4;26316:20;26312:1;26301:9;26297:17;26290:47;26351:131;26477:4;26351:131;:::i;:::-;26343:139;;26247:245;;;:::o;26499:416::-;;26699:2;26688:9;26684:18;26676:26;;26749:9;26743:4;26739:20;26735:1;26724:9;26720:17;26713:47;26774:131;26900:4;26774:131;:::i;:::-;26766:139;;26670:245;;;:::o;26922:416::-;;27122:2;27111:9;27107:18;27099:26;;27172:9;27166:4;27162:20;27158:1;27147:9;27143:17;27136:47;27197:131;27323:4;27197:131;:::i;:::-;27189:139;;27093:245;;;:::o;27345:416::-;;27545:2;27534:9;27530:18;27522:26;;27595:9;27589:4;27585:20;27581:1;27570:9;27566:17;27559:47;27620:131;27746:4;27620:131;:::i;:::-;27612:139;;27516:245;;;:::o;27768:416::-;;27968:2;27957:9;27953:18;27945:26;;28018:9;28012:4;28008:20;28004:1;27993:9;27989:17;27982:47;28043:131;28169:4;28043:131;:::i;:::-;28035:139;;27939:245;;;:::o;28191:416::-;;28391:2;28380:9;28376:18;28368:26;;28441:9;28435:4;28431:20;28427:1;28416:9;28412:17;28405:47;28466:131;28592:4;28466:131;:::i;:::-;28458:139;;28362:245;;;:::o;28614:416::-;;28814:2;28803:9;28799:18;28791:26;;28864:9;28858:4;28854:20;28850:1;28839:9;28835:17;28828:47;28889:131;29015:4;28889:131;:::i;:::-;28881:139;;28785:245;;;:::o;29037:416::-;;29237:2;29226:9;29222:18;29214:26;;29287:9;29281:4;29277:20;29273:1;29262:9;29258:17;29251:47;29312:131;29438:4;29312:131;:::i;:::-;29304:139;;29208:245;;;:::o;29460:416::-;;29660:2;29649:9;29645:18;29637:26;;29710:9;29704:4;29700:20;29696:1;29685:9;29681:17;29674:47;29735:131;29861:4;29735:131;:::i;:::-;29727:139;;29631:245;;;:::o;29883:416::-;;30083:2;30072:9;30068:18;30060:26;;30133:9;30127:4;30123:20;30119:1;30108:9;30104:17;30097:47;30158:131;30284:4;30158:131;:::i;:::-;30150:139;;30054:245;;;:::o;30306:416::-;;30506:2;30495:9;30491:18;30483:26;;30556:9;30550:4;30546:20;30542:1;30531:9;30527:17;30520:47;30581:131;30707:4;30581:131;:::i;:::-;30573:139;;30477:245;;;:::o;30729:416::-;;30929:2;30918:9;30914:18;30906:26;;30979:9;30973:4;30969:20;30965:1;30954:9;30950:17;30943:47;31004:131;31130:4;31004:131;:::i;:::-;30996:139;;30900:245;;;:::o;31152:416::-;;31352:2;31341:9;31337:18;31329:26;;31402:9;31396:4;31392:20;31388:1;31377:9;31373:17;31366:47;31427:131;31553:4;31427:131;:::i;:::-;31419:139;;31323:245;;;:::o;31575:416::-;;31775:2;31764:9;31760:18;31752:26;;31825:9;31819:4;31815:20;31811:1;31800:9;31796:17;31789:47;31850:131;31976:4;31850:131;:::i;:::-;31842:139;;31746:245;;;:::o;31998:416::-;;32198:2;32187:9;32183:18;32175:26;;32248:9;32242:4;32238:20;32234:1;32223:9;32219:17;32212:47;32273:131;32399:4;32273:131;:::i;:::-;32265:139;;32169:245;;;:::o;32421:416::-;;32621:2;32610:9;32606:18;32598:26;;32671:9;32665:4;32661:20;32657:1;32646:9;32642:17;32635:47;32696:131;32822:4;32696:131;:::i;:::-;32688:139;;32592:245;;;:::o;32844:416::-;;33044:2;33033:9;33029:18;33021:26;;33094:9;33088:4;33084:20;33080:1;33069:9;33065:17;33058:47;33119:131;33245:4;33119:131;:::i;:::-;33111:139;;33015:245;;;:::o;33267:416::-;;33467:2;33456:9;33452:18;33444:26;;33517:9;33511:4;33507:20;33503:1;33492:9;33488:17;33481:47;33542:131;33668:4;33542:131;:::i;:::-;33534:139;;33438:245;;;:::o;33690:382::-;;33873:2;33862:9;33858:18;33850:26;;33923:9;33917:4;33913:20;33909:1;33898:9;33894:17;33887:47;33948:114;34057:4;34048:6;33948:114;:::i;:::-;33940:122;;33844:228;;;;:::o;34079:374::-;;34258:2;34247:9;34243:18;34235:26;;34308:9;34302:4;34298:20;34294:1;34283:9;34279:17;34272:47;34333:110;34438:4;34429:6;34333:110;:::i;:::-;34325:118;;34229:224;;;;:::o;34460:218::-;;34585:2;34574:9;34570:18;34562:26;;34599:69;34665:1;34654:9;34650:17;34641:6;34599:69;:::i;:::-;34556:122;;;;:::o;34685:325::-;;34836:2;34825:9;34821:18;34813:26;;34850:69;34916:1;34905:9;34901:17;34892:6;34850:69;:::i;:::-;34930:70;34996:2;34985:9;34981:18;34972:6;34930:70;:::i;:::-;34807:203;;;;;:::o;35017:428::-;;35192:2;35181:9;35177:18;35169:26;;35206:67;35270:1;35259:9;35255:17;35246:6;35206:67;:::i;:::-;35284:72;35352:2;35341:9;35337:18;35328:6;35284:72;:::i;:::-;35367:68;35431:2;35420:9;35416:18;35407:6;35367:68;:::i;:::-;35163:282;;;;;;:::o;35452:772::-;;35715:3;35704:9;35700:19;35692:27;;35730:67;35794:1;35783:9;35779:17;35770:6;35730:67;:::i;:::-;35808:68;35872:2;35861:9;35857:18;35848:6;35808:68;:::i;:::-;35887:78;35961:2;35950:9;35946:18;35937:6;35887:78;:::i;:::-;35976:72;36044:2;36033:9;36029:18;36020:6;35976:72;:::i;:::-;36059:73;36127:3;36116:9;36112:19;36103:6;36059:73;:::i;:::-;36143:71;36209:3;36198:9;36194:19;36185:6;36143:71;:::i;:::-;35686:538;;;;;;;;;:::o;36231:752::-;;36484:3;36473:9;36469:19;36461:27;;36499:67;36563:1;36552:9;36548:17;36539:6;36499:67;:::i;:::-;36577:68;36641:2;36630:9;36626:18;36617:6;36577:68;:::i;:::-;36656;36720:2;36709:9;36705:18;36696:6;36656:68;:::i;:::-;36735:72;36803:2;36792:9;36788:18;36779:6;36735:72;:::i;:::-;36818:73;36886:3;36875:9;36871:19;36862:6;36818:73;:::i;:::-;36902:71;36968:3;36957:9;36953:19;36944:6;36902:71;:::i;:::-;36455:528;;;;;;;;;:::o;36990:151::-;;37076:3;37068:11;;37114:4;37109:3;37105:14;37097:22;;37062:79;;;:::o;37148:137::-;;37257:5;37251:12;37241:22;;37222:63;;;:::o;37292:121::-;;37385:5;37379:12;37369:22;;37350:63;;;:::o;37420:122::-;;37514:5;37508:12;37498:22;;37479:63;;;:::o;37549:108::-;;37647:4;37642:3;37638:14;37630:22;;37624:33;;;:::o;37665:168::-;;37785:6;37780:3;37773:19;37822:4;37817:3;37813:14;37798:29;;37766:67;;;;:::o;37842:152::-;;37946:6;37941:3;37934:19;37983:4;37978:3;37974:14;37959:29;;37927:67;;;;:::o;38003:144::-;;38138:3;38123:18;;38116:31;;;;:::o;38156:163::-;;38271:6;38266:3;38259:19;38308:4;38303:3;38299:14;38284:29;;38252:67;;;;:::o;38327:91::-;;38389:24;38407:5;38389:24;:::i;:::-;38378:35;;38372:46;;;:::o;38425:85::-;;38498:5;38491:13;38484:21;38473:32;;38467:43;;;:::o;38517:72::-;;38579:5;38568:16;;38562:27;;;:::o;38596:121::-;;38669:42;38662:5;38658:54;38647:65;;38641:76;;;:::o;38724:72::-;;38786:5;38775:16;;38769:27;;;:::o;38803:88::-;;38875:10;38868:5;38864:22;38853:33;;38847:44;;;:::o;38898:81::-;;38969:4;38962:5;38958:16;38947:27;;38941:38;;;:::o;38986:129::-;;39073:37;39104:5;39073:37;:::i;:::-;39060:50;;39054:61;;;:::o;39122:112::-;;39207:22;39223:5;39207:22;:::i;:::-;39194:35;;39188:46;;;:::o;39241:121::-;;39320:37;39351:5;39320:37;:::i;:::-;39307:50;;39301:61;;;:::o;39369:108::-;;39448:24;39466:5;39448:24;:::i;:::-;39435:37;;39429:48;;;:::o;39485:268::-;39550:1;39557:101;39571:6;39568:1;39565:13;39557:101;;;39647:1;39642:3;39638:11;39632:18;39628:1;39623:3;39619:11;39612:39;39593:2;39590:1;39586:10;39581:15;;39557:101;;;39673:6;39670:1;39667:13;39664:2;;;39738:1;39729:6;39724:3;39720:16;39713:27;39664:2;39534:219;;;;:::o;39761:74::-;;39825:5;39814:16;;39808:27;;;:::o;39842:88::-;;39904:21;39919:5;39904:21;:::i;:::-;39893:32;;39887:43;;;:::o;39937:97::-;;40025:2;40021:7;40016:2;40009:5;40005:14;40001:28;39991:38;;39985:49;;;:::o;40042:96::-;;40122:5;40117:3;40113:15;40091:37;;40085:53;;;:::o;40146:117::-;40215:24;40233:5;40215:24;:::i;:::-;40208:5;40205:35;40195:2;;40254:1;40251;40244:12;40195:2;40189:74;:::o;40270:111::-;40336:21;40351:5;40336:21;:::i;:::-;40329:5;40326:32;40316:2;;40372:1;40369;40362:12;40316:2;40310:71;:::o;40388:117::-;40457:24;40475:5;40457:24;:::i;:::-;40450:5;40447:35;40437:2;;40496:1;40493;40486:12;40437:2;40431:74;:::o;40512:117::-;40581:24;40599:5;40581:24;:::i;:::-;40574:5;40571:35;40561:2;;40620:1;40617;40610:12;40561:2;40555:74;:::o;40636:115::-;40704:23;40721:5;40704:23;:::i;:::-;40697:5;40694:34;40684:2;;40742:1;40739;40732:12;40684:2;40678:73;:::o;40758:113::-;40825:22;40841:5;40825:22;:::i;:::-;40818:5;40815:33;40805:2;;40862:1;40859;40852:12;40805:2;40799:72;:::o", + "source": "// contracts/Wormhole.sol\n// SPDX-License-Identifier: Apache 2\n\npragma solidity ^0.6.0;\npragma experimental ABIEncoderV2;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\";\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\nimport \"./BytesLib.sol\";\nimport \"./WrappedAsset.sol\";\n\ncontract Wormhole is ReentrancyGuard {\n using SafeERC20 for IERC20;\n using BytesLib for bytes;\n using SafeMath for uint256;\n\n uint64 constant MAX_UINT64 = 18_446_744_073_709_551_615;\n\n // Address of the Wrapped asset template\n address public wrappedAssetMaster;\n\n // Chain ID of Ethereum\n uint8 CHAIN_ID = 2;\n\n // Address of the official WETH contract\n address constant WETHAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;\n\n struct GuardianSet {\n address[] keys;\n uint32 expiration_time;\n }\n\n event LogGuardianSetChanged(\n uint32 oldGuardianIndex,\n uint32 newGuardianIndex\n );\n\n event LogTokensLocked(\n uint8 target_chain,\n uint8 token_chain,\n uint8 token_decimals,\n bytes32 indexed token,\n bytes32 indexed sender,\n bytes32 recipient,\n uint256 amount,\n uint32 nonce\n );\n\n struct ParsedVAA {\n uint8 version;\n bytes32 hash;\n uint32 guardian_set_index;\n uint32 timestamp;\n uint8 action;\n bytes payload;\n }\n\n // Mapping of guardian_set_index => guardian set\n mapping(uint32 => GuardianSet) public guardian_sets;\n // Current active guardian set\n uint32 public guardian_set_index;\n\n // Period for which a guardian set stays active after it has been replaced\n uint32 public guardian_set_expirity;\n\n // Mapping of already consumedVAAs\n mapping(bytes32 => bool) public consumedVAAs;\n\n // Mapping of wrapped asset ERC20 contracts\n mapping(bytes32 => address) public wrappedAssets;\n mapping(address => bool) public isWrappedAsset;\n\n constructor(GuardianSet memory initial_guardian_set, address wrapped_asset_master, uint32 _guardian_set_expirity) public {\n guardian_sets[0] = initial_guardian_set;\n // Explicitly set for doc purposes\n guardian_set_index = 0;\n guardian_set_expirity = _guardian_set_expirity;\n\n wrappedAssetMaster = wrapped_asset_master;\n }\n\n function getGuardianSet(uint32 idx) view public returns (GuardianSet memory gs) {\n return guardian_sets[idx];\n }\n\n function submitVAA(\n bytes calldata vaa\n ) public nonReentrant {\n ParsedVAA memory parsed_vaa = parseAndVerifyVAA(vaa);\n // Process VAA\n if (parsed_vaa.action == 0x01) {\n require(parsed_vaa.guardian_set_index == guardian_set_index, \"only the current guardian set can change the guardian set\");\n vaaUpdateGuardianSet(parsed_vaa.payload);\n } else if (parsed_vaa.action == 0x10) {\n vaaTransfer(parsed_vaa.payload);\n } else {\n revert(\"invalid VAA action\");\n }\n\n // Set the VAA as consumed\n consumedVAAs[parsed_vaa.hash] = true;\n }\n\n // parseAndVerifyVAA parses raw VAA data into a struct and verifies whether it contains sufficient signatures of an\n // active guardian set i.e. is valid according to Wormhole consensus rules.\n function parseAndVerifyVAA(bytes calldata vaa) public view returns (ParsedVAA memory parsed_vaa) {\n parsed_vaa.version = vaa.toUint8(0);\n require(parsed_vaa.version == 1, \"VAA version incompatible\");\n\n // Load 4 bytes starting from index 1\n parsed_vaa.guardian_set_index = vaa.toUint32(1);\n\n uint256 len_signers = vaa.toUint8(5);\n uint offset = 6 + 66 * len_signers;\n\n // Load 4 bytes timestamp\n parsed_vaa.timestamp = vaa.toUint32(offset);\n\n // Hash the body\n parsed_vaa.hash = keccak256(vaa.slice(offset, vaa.length - offset));\n require(!consumedVAAs[parsed_vaa.hash], \"VAA was already executed\");\n\n GuardianSet memory guardian_set = guardian_sets[parsed_vaa.guardian_set_index];\n require(guardian_set.keys.length > 0, \"invalid guardian set\");\n require(guardian_set.expiration_time == 0 || guardian_set.expiration_time > block.timestamp, \"guardian set has expired\");\n // We're using a fixed point number transformation with 1 decimal to deal with rounding.\n require(((guardian_set.keys.length * 10 / 3) * 2) / 10 + 1 <= len_signers, \"no quorum\");\n\n int16 last_index = - 1;\n for (uint i = 0; i < len_signers; i++) {\n uint8 index = vaa.toUint8(6 + i * 66);\n require(index > last_index, \"signature indices must be ascending\");\n last_index = int16(index);\n\n bytes32 r = vaa.toBytes32(7 + i * 66);\n bytes32 s = vaa.toBytes32(39 + i * 66);\n uint8 v = vaa.toUint8(71 + i * 66);\n v += 27;\n require(ecrecover(parsed_vaa.hash, v, r, s) == guardian_set.keys[index], \"VAA signature invalid\");\n }\n\n parsed_vaa.action = vaa.toUint8(offset + 4);\n parsed_vaa.payload = vaa.slice(offset + 5, vaa.length - (offset + 5));\n }\n\n function vaaUpdateGuardianSet(bytes memory data) private {\n uint32 new_guardian_set_index = data.toUint32(0);\n require(new_guardian_set_index == guardian_set_index + 1, \"index must increase in steps of 1\");\n uint8 len = data.toUint8(4);\n\n address[] memory new_guardians = new address[](len);\n for (uint i = 0; i < len; i++) {\n address addr = data.toAddress(5 + i * 20);\n new_guardians[i] = addr;\n }\n\n uint32 old_guardian_set_index = guardian_set_index;\n guardian_set_index = new_guardian_set_index;\n\n GuardianSet memory new_guardian_set = GuardianSet(new_guardians, 0);\n guardian_sets[guardian_set_index] = new_guardian_set;\n guardian_sets[old_guardian_set_index].expiration_time = uint32(block.timestamp) + guardian_set_expirity;\n\n emit LogGuardianSetChanged(old_guardian_set_index, guardian_set_index);\n }\n\n function vaaTransfer(bytes memory data) private {\n //uint32 nonce = data.toUint64(0);\n uint8 source_chain = data.toUint8(4);\n\n uint8 target_chain = data.toUint8(5);\n //bytes32 source_address = data.toBytes32(6);\n //bytes32 target_address = data.toBytes32(38);\n address target_address = data.toAddress(38 + 12);\n\n uint8 token_chain = data.toUint8(70);\n //bytes32 token_address = data.toBytes32(71);\n uint256 amount = data.toUint256(104);\n\n require(source_chain != target_chain, \"same chain transfers are not supported\");\n require(target_chain == CHAIN_ID, \"transfer must be incoming\");\n\n if (token_chain != CHAIN_ID) {\n bytes32 token_address = data.toBytes32(71);\n bytes32 asset_id = keccak256(abi.encodePacked(token_chain, token_address));\n\n // if yes: mint to address\n // if no: create and mint\n address wrapped_asset = wrappedAssets[asset_id];\n if (wrapped_asset == address(0)) {\n uint8 asset_decimals = data.toUint8(103);\n wrapped_asset = deployWrappedAsset(asset_id, token_chain, token_address, asset_decimals);\n }\n\n WrappedAsset(wrapped_asset).mint(target_address, amount);\n } else {\n address token_address = data.toAddress(71 + 12);\n\n uint8 decimals = ERC20(token_address).decimals();\n\n // Readjust decimals if they've previously been truncated\n if (decimals > 9) {\n amount = amount.mul(10 ** uint256(decimals - 9));\n }\n IERC20(token_address).safeTransfer(target_address, amount);\n }\n }\n\n function deployWrappedAsset(bytes32 seed, uint8 token_chain, bytes32 token_address, uint8 decimals) private returns (address asset){\n // Taken from https://github.com/OpenZeppelin/openzeppelin-sdk/blob/master/packages/lib/contracts/upgradeability/ProxyFactory.sol\n // Licensed under MIT\n bytes20 targetBytes = bytes20(wrappedAssetMaster);\n assembly {\n let clone := mload(0x40)\n mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(clone, 0x14), targetBytes)\n mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n asset := create2(0, clone, 0x37, seed)\n }\n\n // Call initializer\n WrappedAsset(asset).initialize(token_chain, token_address, decimals);\n\n // Store address\n wrappedAssets[seed] = asset;\n isWrappedAsset[asset] = true;\n }\n\n function lockAssets(\n address asset,\n uint256 amount,\n bytes32 recipient,\n uint8 target_chain,\n uint32 nonce,\n bool refund_dust\n ) public nonReentrant {\n require(target_chain != CHAIN_ID, \"must not transfer to the same chain\");\n\n uint8 asset_chain = CHAIN_ID;\n bytes32 asset_address;\n uint8 decimals = ERC20(asset).decimals();\n\n if (isWrappedAsset[asset]) {\n WrappedAsset(asset).burn(msg.sender, amount);\n asset_chain = WrappedAsset(asset).assetChain();\n asset_address = WrappedAsset(asset).assetAddress();\n } else {\n uint256 balanceBefore = IERC20(asset).balanceOf(address(this));\n IERC20(asset).safeTransferFrom(msg.sender, address(this), amount);\n uint256 balanceAfter = IERC20(asset).balanceOf(address(this));\n\n // The amount that was transferred in is the delta between balance before and after the transfer.\n // This is to properly handle tokens that charge a fee on transfer.\n amount = balanceAfter.sub(balanceBefore);\n\n // Decimal adjust amount - we keep the dust\n if (decimals > 9) {\n uint256 original_amount = amount;\n amount = amount.div(10 ** uint256(decimals - 9));\n\n if (refund_dust) {\n IERC20(asset).safeTransfer(msg.sender, original_amount.mod(10 ** uint256(decimals - 9)));\n }\n\n decimals = 9;\n }\n\n require(balanceAfter.div(10 ** uint256(ERC20(asset).decimals() - 9)) <= MAX_UINT64, \"bridge balance would exceed maximum\");\n\n asset_address = bytes32(uint256(asset));\n }\n\n // Check here after truncation\n require(amount != 0, \"truncated amount must not be 0\");\n\n emit LogTokensLocked(target_chain, asset_chain, decimals, asset_address, bytes32(uint256(msg.sender)), recipient, amount, nonce);\n }\n\n function lockETH(\n bytes32 recipient,\n uint8 target_chain,\n uint32 nonce\n ) public payable nonReentrant {\n require(target_chain != CHAIN_ID, \"must not transfer to the same chain\");\n\n uint256 remainder = msg.value.mod(10 ** 9);\n uint256 transfer_amount = msg.value.div(10 ** 9);\n require(transfer_amount != 0, \"truncated amount must not be 0\");\n\n // Transfer back remainder\n msg.sender.transfer(remainder);\n\n // Wrap tx value in WETH\n WETH(WETHAddress).deposit{value : msg.value - remainder}();\n\n // Log deposit of WETH\n emit LogTokensLocked(target_chain, CHAIN_ID, 9, bytes32(uint256(WETHAddress)), bytes32(uint256(msg.sender)), recipient, transfer_amount, nonce);\n }\n\n fallback() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\n\n receive() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\n}\n\n\ninterface WETH is IERC20 {\n function deposit() external payable;\n\n function withdraw(uint256 amount) external;\n}\n", + "sourcePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/Wormhole.sol", "ast": { - "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol", + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/Wormhole.sol", "exportedSymbols": { - "WETH": [1265], - "Wormhole": [1254] + "WETH": [1431], + "Wormhole": [1420] }, - "id": 1266, + "id": 1432, "license": "Apache 2", "nodeType": "SourceUnit", "nodes": [ @@ -359,22 +410,22 @@ "id": 335, "literals": ["solidity", "^", "0.6", ".0"], "nodeType": "PragmaDirective", - "src": "103:23:1" + "src": "64:23:1" }, { "id": 336, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", - "src": "127:33:1" + "src": "88:33:1" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "id": 337, "nodeType": "ImportDirective", - "scope": 1266, - "sourceUnit": 2538, - "src": "162:55:1", + "scope": 1432, + "sourceUnit": 3009, + "src": "123:55:1", "symbolAliases": [], "unitAlias": "" }, @@ -383,9 +434,9 @@ "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 338, "nodeType": "ImportDirective", - "scope": 1266, - "sourceUnit": 2616, - "src": "218:56:1", + "scope": 1432, + "sourceUnit": 3087, + "src": "179:56:1", "symbolAliases": [], "unitAlias": "" }, @@ -394,9 +445,9 @@ "file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", "id": 339, "nodeType": "ImportDirective", - "scope": 1266, - "sourceUnit": 2829, - "src": "275:59:1", + "scope": 1432, + "sourceUnit": 3300, + "src": "236:59:1", "symbolAliases": [], "unitAlias": "" }, @@ -405,9 +456,9 @@ "file": "@openzeppelin/contracts/math/SafeMath.sol", "id": 340, "nodeType": "ImportDirective", - "scope": 1266, - "sourceUnit": 2031, - "src": "335:51:1", + "scope": 1432, + "sourceUnit": 2506, + "src": "296:51:1", "symbolAliases": [], "unitAlias": "" }, @@ -416,31 +467,31 @@ "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "id": 341, "nodeType": "ImportDirective", - "scope": 1266, - "sourceUnit": 3073, - "src": "387:59:1", + "scope": 1432, + "sourceUnit": 3659, + "src": "348:59:1", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/BytesLib.sol", + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/BytesLib.sol", "file": "./BytesLib.sol", "id": 342, "nodeType": "ImportDirective", - "scope": 1266, + "scope": 1432, "sourceUnit": 334, - "src": "447:24:1", + "src": "408:24:1", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol", + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol", "file": "./WrappedAsset.sol", "id": 343, "nodeType": "ImportDirective", - "scope": 1266, - "sourceUnit": 1812, - "src": "472:28:1", + "scope": 1432, + "sourceUnit": 2148, + "src": "433:28:1", "symbolAliases": [], "unitAlias": "" }, @@ -454,24 +505,24 @@ "id": 344, "name": "ReentrancyGuard", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3072, - "src": "523:15:1", + "referencedDeclaration": 3658, + "src": "484:15:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_ReentrancyGuard_$3072", + "typeIdentifier": "t_contract$_ReentrancyGuard_$3658", "typeString": "contract ReentrancyGuard" } }, "id": 345, "nodeType": "InheritanceSpecifier", - "src": "523:15:1" + "src": "484:15:1" } ], - "contractDependencies": [3072], + "contractDependencies": [3658], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 1254, - "linearizedBaseContracts": [1254, 3072], + "id": 1420, + "linearizedBaseContracts": [1420, 3658], "name": "Wormhole", "nodeType": "ContractDefinition", "nodes": [ @@ -482,24 +533,24 @@ "id": 346, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2828, - "src": "551:9:1", + "referencedDeclaration": 3299, + "src": "512:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$2828", + "typeIdentifier": "t_contract$_SafeERC20_$3299", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "545:27:1", + "src": "506:27:1", "typeName": { "contractScope": null, "id": 347, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2615, - "src": "565:6:1", + "referencedDeclaration": 3086, + "src": "526:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2615", + "typeIdentifier": "t_contract$_IERC20_$3086", "typeString": "contract IERC20" } } @@ -512,19 +563,19 @@ "name": "BytesLib", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 333, - "src": "583:8:1", + "src": "544:8:1", "typeDescriptions": { "typeIdentifier": "t_contract$_BytesLib_$333", "typeString": "library BytesLib" } }, "nodeType": "UsingForDirective", - "src": "577:25:1", + "src": "538:25:1", "typeName": { "id": 350, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "596:5:1", + "src": "557:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -538,20 +589,20 @@ "id": 352, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2030, - "src": "613:8:1", + "referencedDeclaration": 2505, + "src": "574:8:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$2030", + "typeIdentifier": "t_contract$_SafeMath_$2505", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "607:27:1", + "src": "568:27:1", "typeName": { "id": 353, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "626:7:1", + "src": "587:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -565,8 +616,8 @@ "name": "MAX_UINT64", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1254, - "src": "640:55:1", + "scope": 1420, + "src": "601:55:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -577,7 +628,7 @@ "id": 355, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "640:6:1", + "src": "601:6:1", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -593,7 +644,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "669:26:1", + "src": "630:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18446744073709551615_by_1", @@ -611,8 +662,8 @@ "name": "wrappedAssetMaster", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1254, - "src": "747:33:1", + "scope": 1420, + "src": "708:33:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -623,7 +674,7 @@ "id": 358, "name": "address", "nodeType": "ElementaryTypeName", - "src": "747:7:1", + "src": "708:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -640,8 +691,8 @@ "name": "CHAIN_ID", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1254, - "src": "815:18:1", + "scope": 1420, + "src": "776:18:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -652,7 +703,7 @@ "id": 360, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "815:5:1", + "src": "776:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -668,7 +719,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "832:1:1", + "src": "793:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -685,8 +736,8 @@ "name": "WETHAddress", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1254, - "src": "885:73:1", + "scope": 1420, + "src": "846:73:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -697,7 +748,7 @@ "id": 363, "name": "address", "nodeType": "ElementaryTypeName", - "src": "885:7:1", + "src": "846:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -714,7 +765,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "916:42:1", + "src": "877:42:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -736,7 +787,7 @@ "nodeType": "VariableDeclaration", "overrides": null, "scope": 371, - "src": "994:14:1", + "src": "955:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -748,7 +799,7 @@ "id": 366, "name": "address", "nodeType": "ElementaryTypeName", - "src": "994:7:1", + "src": "955:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -758,7 +809,7 @@ "id": 367, "length": null, "nodeType": "ArrayTypeName", - "src": "994:9:1", + "src": "955:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -775,7 +826,7 @@ "nodeType": "VariableDeclaration", "overrides": null, "scope": 371, - "src": "1018:22:1", + "src": "979:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -786,7 +837,7 @@ "id": 369, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1018:6:1", + "src": "979:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -798,8 +849,8 @@ ], "name": "GuardianSet", "nodeType": "StructDefinition", - "scope": 1254, - "src": "965:82:1", + "scope": 1420, + "src": "926:82:1", "visibility": "public" }, { @@ -821,7 +872,7 @@ "nodeType": "VariableDeclaration", "overrides": null, "scope": 377, - "src": "1090:23:1", + "src": "1051:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -832,7 +883,7 @@ "id": 372, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1090:6:1", + "src": "1051:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -850,7 +901,7 @@ "nodeType": "VariableDeclaration", "overrides": null, "scope": 377, - "src": "1123:23:1", + "src": "1084:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -861,7 +912,7 @@ "id": 374, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1123:6:1", + "src": "1084:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -871,9 +922,9 @@ "visibility": "internal" } ], - "src": "1080:72:1" + "src": "1041:72:1" }, - "src": "1053:100:1" + "src": "1014:100:1" }, { "anonymous": false, @@ -894,7 +945,7 @@ "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, - "src": "1190:18:1", + "src": "1151:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -905,7 +956,7 @@ "id": 378, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1190:5:1", + "src": "1151:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -923,7 +974,7 @@ "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, - "src": "1218:17:1", + "src": "1179:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -934,7 +985,7 @@ "id": 380, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1218:5:1", + "src": "1179:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -952,7 +1003,7 @@ "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, - "src": "1245:20:1", + "src": "1206:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -963,7 +1014,7 @@ "id": 382, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1245:5:1", + "src": "1206:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -981,7 +1032,7 @@ "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, - "src": "1275:21:1", + "src": "1236:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -992,7 +1043,7 @@ "id": 384, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1275:7:1", + "src": "1236:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1010,7 +1061,7 @@ "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, - "src": "1306:22:1", + "src": "1267:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1021,7 +1072,7 @@ "id": 386, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1306:7:1", + "src": "1267:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1039,7 +1090,7 @@ "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, - "src": "1338:17:1", + "src": "1299:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1050,7 +1101,7 @@ "id": 388, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1338:7:1", + "src": "1299:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1068,7 +1119,7 @@ "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, - "src": "1365:14:1", + "src": "1326:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1079,7 +1130,7 @@ "id": 390, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1365:7:1", + "src": "1326:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1097,7 +1148,7 @@ "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, - "src": "1389:12:1", + "src": "1350:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1108,7 +1159,7 @@ "id": 392, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1389:6:1", + "src": "1350:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1118,20 +1169,199 @@ "visibility": "internal" } ], - "src": "1180:227:1" + "src": "1141:227:1" }, - "src": "1159:249:1" + "src": "1120:249:1" + }, + { + "canonicalName": "Wormhole.ParsedVAA", + "id": 408, + "members": [ + { + "constant": false, + "id": 397, + "mutability": "mutable", + "name": "version", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 408, + "src": "1402:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 396, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1402:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 399, + "mutability": "mutable", + "name": "hash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 408, + "src": "1425:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 398, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1425:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 401, + "mutability": "mutable", + "name": "guardian_set_index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 408, + "src": "1447:25:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 400, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1447:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 403, + "mutability": "mutable", + "name": "timestamp", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 408, + "src": "1482:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 402, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1482:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 405, + "mutability": "mutable", + "name": "action", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 408, + "src": "1508:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 404, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1508:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 407, + "mutability": "mutable", + "name": "payload", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 408, + "src": "1530:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 406, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1530:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "ParsedVAA", + "nodeType": "StructDefinition", + "scope": 1420, + "src": "1375:175:1", + "visibility": "public" }, { "constant": false, "functionSelector": "42b0aefa", - "id": 399, + "id": 412, "mutability": "mutable", "name": "guardian_sets", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1254, - "src": "1467:51:1", + "scope": 1420, + "src": "1609:51:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1139,30 +1369,30 @@ "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" }, "typeName": { - "id": 398, + "id": 411, "keyType": { - "id": 396, + "id": 409, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1475:6:1", + "src": "1617:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Mapping", - "src": "1467:30:1", + "src": "1609:30:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" }, "valueType": { "contractScope": null, - "id": 397, + "id": 410, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 371, - "src": "1485:11:1", + "src": "1627:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", "typeString": "struct Wormhole.GuardianSet" @@ -1175,13 +1405,13 @@ { "constant": false, "functionSelector": "822d82b3", - "id": 401, + "id": 414, "mutability": "mutable", "name": "guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1254, - "src": "1559:32:1", + "scope": 1420, + "src": "1701:32:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1189,10 +1419,10 @@ "typeString": "uint32" }, "typeName": { - "id": 400, + "id": 413, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1559:6:1", + "src": "1701:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1204,13 +1434,13 @@ { "constant": false, "functionSelector": "4db47840", - "id": 403, + "id": 416, "mutability": "mutable", "name": "guardian_set_expirity", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1254, - "src": "1677:35:1", + "scope": 1420, + "src": "1819:35:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1218,10 +1448,10 @@ "typeString": "uint32" }, "typeName": { - "id": 402, + "id": 415, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1677:6:1", + "src": "1819:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1233,13 +1463,13 @@ { "constant": false, "functionSelector": "a31fe409", - "id": 407, + "id": 420, "mutability": "mutable", "name": "consumedVAAs", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1254, - "src": "1758:44:1", + "scope": 1420, + "src": "1900:44:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1247,28 +1477,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 406, + "id": 419, "keyType": { - "id": 404, + "id": 417, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1766:7:1", + "src": "1908:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "1758:24:1", + "src": "1900:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 405, + "id": 418, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1777:4:1", + "src": "1919:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1281,13 +1511,13 @@ { "constant": false, "functionSelector": "b6694c2a", - "id": 411, + "id": 424, "mutability": "mutable", "name": "wrappedAssets", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1254, - "src": "1857:48:1", + "scope": 1420, + "src": "1999:48:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1295,28 +1525,28 @@ "typeString": "mapping(bytes32 => address)" }, "typeName": { - "id": 410, + "id": 423, "keyType": { - "id": 408, + "id": 421, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1865:7:1", + "src": "2007:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "1857:27:1", + "src": "1999:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" }, "valueType": { - "id": 409, + "id": 422, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1876:7:1", + "src": "2018:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1330,13 +1560,13 @@ { "constant": false, "functionSelector": "1a2be4da", - "id": 415, + "id": 428, "mutability": "mutable", "name": "isWrappedAsset", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1254, - "src": "1911:46:1", + "scope": 1420, + "src": "2053:46:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1344,28 +1574,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 414, + "id": 427, "keyType": { - "id": 412, + "id": 425, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1919:7:1", + "src": "2061:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1911:24:1", + "src": "2053:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 413, + "id": 426, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1930:4:1", + "src": "2072:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1377,14 +1607,14 @@ }, { "body": { - "id": 442, + "id": 455, "nodeType": "Block", - "src": "2085:239:1", + "src": "2227:239:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 428, + "id": 441, "isConstant": false, "isLValue": false, "isPure": false, @@ -1393,29 +1623,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 424, + "id": 437, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 399, - "src": "2095:13:1", + "referencedDeclaration": 412, + "src": "2237:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, - "id": 426, + "id": 439, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 425, + "id": 438, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2109:1:1", + "src": "2251:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1428,7 +1658,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2095:16:1", + "src": "2237:16:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" @@ -1438,43 +1668,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 427, + "id": 440, "name": "initial_guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 417, - "src": "2114:20:1", + "referencedDeclaration": 430, + "src": "2256:20:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, - "src": "2095:39:1", + "src": "2237:39:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, - "id": 429, + "id": 442, "nodeType": "ExpressionStatement", - "src": "2095:39:1" + "src": "2237:39:1" }, { "expression": { "argumentTypes": null, - "id": 432, + "id": 445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 430, + "id": 443, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 401, - "src": "2187:18:1", + "referencedDeclaration": 414, + "src": "2329:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1485,14 +1715,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 431, + "id": 444, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2208:1:1", + "src": "2350:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1500,32 +1730,32 @@ }, "value": "0" }, - "src": "2187:22:1", + "src": "2329:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, - "id": 433, + "id": 446, "nodeType": "ExpressionStatement", - "src": "2187:22:1" + "src": "2329:22:1" }, { "expression": { "argumentTypes": null, - "id": 436, + "id": 449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 434, + "id": 447, "name": "guardian_set_expirity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 403, - "src": "2219:21:1", + "referencedDeclaration": 416, + "src": "2361:21:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1535,43 +1765,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 435, + "id": 448, "name": "_guardian_set_expirity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2243:22:1", + "referencedDeclaration": 434, + "src": "2385:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, - "src": "2219:46:1", + "src": "2361:46:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, - "id": 437, + "id": 450, "nodeType": "ExpressionStatement", - "src": "2219:46:1" + "src": "2361:46:1" }, { "expression": { "argumentTypes": null, - "id": 440, + "id": 453, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 438, + "id": 451, "name": "wrappedAssetMaster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 359, - "src": "2276:18:1", + "src": "2418:18:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1581,31 +1811,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 439, + "id": 452, "name": "wrapped_asset_master", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 419, - "src": "2297:20:1", + "referencedDeclaration": 432, + "src": "2439:20:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2276:41:1", + "src": "2418:41:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 441, + "id": 454, "nodeType": "ExpressionStatement", - "src": "2276:41:1" + "src": "2418:41:1" } ] }, "documentation": null, - "id": 443, + "id": 456, "implemented": true, "kind": "constructor", "modifiers": [], @@ -1613,18 +1843,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 422, + "id": 435, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 417, + "id": 430, "mutability": "mutable", "name": "initial_guardian_set", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 443, - "src": "1976:39:1", + "scope": 456, + "src": "2118:39:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1633,11 +1863,11 @@ }, "typeName": { "contractScope": null, - "id": 416, + "id": 429, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 371, - "src": "1976:11:1", + "src": "2118:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", "typeString": "struct Wormhole.GuardianSet" @@ -1648,13 +1878,13 @@ }, { "constant": false, - "id": 419, + "id": 432, "mutability": "mutable", "name": "wrapped_asset_master", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 443, - "src": "2017:28:1", + "scope": 456, + "src": "2159:28:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1662,10 +1892,10 @@ "typeString": "address" }, "typeName": { - "id": 418, + "id": 431, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2017:7:1", + "src": "2159:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1677,13 +1907,13 @@ }, { "constant": false, - "id": 421, + "id": 434, "mutability": "mutable", "name": "_guardian_set_expirity", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 443, - "src": "2047:29:1", + "scope": 456, + "src": "2189:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1691,10 +1921,10 @@ "typeString": "uint32" }, "typeName": { - "id": 420, + "id": 433, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "2047:6:1", + "src": "2189:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1704,51 +1934,51 @@ "visibility": "internal" } ], - "src": "1975:102:1" + "src": "2117:102:1" }, "returnParameters": { - "id": 423, + "id": 436, "nodeType": "ParameterList", "parameters": [], - "src": "2085:0:1" + "src": "2227:0:1" }, - "scope": 1254, - "src": "1964:360:1", + "scope": 1420, + "src": "2106:360:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { - "id": 454, + "id": 467, "nodeType": "Block", - "src": "2410:42:1", + "src": "2552:42:1", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 450, + "id": 463, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 399, - "src": "2427:13:1", + "referencedDeclaration": 412, + "src": "2569:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, - "id": 452, + "id": 465, "indexExpression": { "argumentTypes": null, - "id": 451, + "id": 464, "name": "idx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 445, - "src": "2441:3:1", + "referencedDeclaration": 458, + "src": "2583:3:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1759,22 +1989,22 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2427:18:1", + "src": "2569:18:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, - "functionReturnParameters": 449, - "id": 453, + "functionReturnParameters": 462, + "id": 466, "nodeType": "Return", - "src": "2420:25:1" + "src": "2562:25:1" } ] }, "documentation": null, "functionSelector": "f951975a", - "id": 455, + "id": 468, "implemented": true, "kind": "function", "modifiers": [], @@ -1782,18 +2012,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 446, + "id": 459, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 445, + "id": 458, "mutability": "mutable", "name": "idx", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 455, - "src": "2354:10:1", + "scope": 468, + "src": "2496:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1801,10 +2031,10 @@ "typeString": "uint32" }, "typeName": { - "id": 444, + "id": 457, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "2354:6:1", + "src": "2496:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1814,21 +2044,21 @@ "visibility": "internal" } ], - "src": "2353:12:1" + "src": "2495:12:1" }, "returnParameters": { - "id": 449, + "id": 462, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 448, + "id": 461, "mutability": "mutable", "name": "gs", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 455, - "src": "2387:21:1", + "scope": 468, + "src": "2529:21:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1837,11 +2067,11 @@ }, "typeName": { "contractScope": null, - "id": 447, + "id": 460, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 371, - "src": "2387:11:1", + "src": "2529:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", "typeString": "struct Wormhole.GuardianSet" @@ -1851,765 +2081,91 @@ "visibility": "internal" } ], - "src": "2386:23:1" + "src": "2528:23:1" }, - "scope": 1254, - "src": "2330:122:1", + "scope": 1420, + "src": "2472:122:1", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 692, + "id": 523, "nodeType": "Block", - "src": "2531:1801:1", + "src": "2673:566:1", "statements": [ { - "assignments": [463], + "assignments": [476], "declarations": [ { "constant": false, - "id": 463, + "id": 476, "mutability": "mutable", - "name": "version", + "name": "parsed_vaa", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 692, - "src": "2541:13:1", + "scope": 523, + "src": "2683:27:1", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA" }, "typeName": { - "id": 462, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2541:5:1", + "contractScope": null, + "id": 475, + "name": "ParsedVAA", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 408, + "src": "2683:9:1", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_struct$_ParsedVAA_$408_storage_ptr", + "typeString": "struct Wormhole.ParsedVAA" } }, "value": null, "visibility": "internal" } ], - "id": 468, + "id": 480, "initialValue": { "argumentTypes": null, "arguments": [ { - "argumentTypes": null, - "hexValue": "30", - "id": 466, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2569:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "expression": { - "argumentTypes": null, - "id": 464, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "2557:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 465, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "2557:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 467, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2557:14:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2541:30:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 472, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 470, - "name": "version", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 463, - "src": "2589:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 471, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2600:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2589:12:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5641412076657273696f6e20696e636f6d70617469626c65", - "id": 473, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2603:26:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", - "typeString": "literal_string \"VAA version incompatible\"" - }, - "value": "VAA version incompatible" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", - "typeString": "literal_string \"VAA version incompatible\"" - } - ], - "id": 469, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "2581:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 474, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2581:49:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 475, - "nodeType": "ExpressionStatement", - "src": "2581:49:1" - }, - { - "assignments": [477], - "declarations": [ - { - "constant": false, - "id": 477, - "mutability": "mutable", - "name": "vaa_guardian_set_index", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 692, - "src": "2687:29:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 476, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2687:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 482, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "31", - "id": 480, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2732:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - } - ], - "expression": { "argumentTypes": null, "id": 478, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "2719:3:1", + "referencedDeclaration": 470, + "src": "2731:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } - }, - "id": 479, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint32", - "nodeType": "MemberAccess", - "referencedDeclaration": 163, - "src": "2719:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint32)" - } - }, - "id": 481, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2719:15:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2687:47:1" - }, - { - "assignments": [484], - "declarations": [ - { - "constant": false, - "id": 484, - "mutability": "mutable", - "name": "len_signers", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 692, - "src": "2745:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 483, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2745:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 489, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "35", - "id": 487, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2779:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - } - ], - "expression": { - "argumentTypes": null, - "id": 485, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "2767:3:1", - "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } - }, - "id": 486, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "2767:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2767:14:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2745:36:1" - }, - { - "assignments": [491], - "declarations": [ - { - "constant": false, - "id": 491, - "mutability": "mutable", - "name": "offset", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 692, - "src": "2791:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 490, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "2791:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 497, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 496, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "36", - "id": 492, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2805:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_6_by_1", - "typeString": "int_const 6" - }, - "value": "6" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 495, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3636", - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2809:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_66_by_1", - "typeString": "int_const 66" - }, - "value": "66" - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 494, - "name": "len_signers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2814:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2809:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2805:20:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2791:34:1" - }, - { - "assignments": [499], - "declarations": [ - { - "constant": false, - "id": 499, - "mutability": "mutable", - "name": "hash", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 692, - "src": "2947:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 498, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2947:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 510, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 503, - "name": "offset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "2982:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 504, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "2990:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 505, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2990:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 506, - "name": "offset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "3003:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2990:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 501, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "2972:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "slice", - "nodeType": "MemberAccess", - "referencedDeclaration": 55, - "src": "2972:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" - } - }, - "id": 508, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2972:38:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } ], - "id": 500, - "name": "keccak256", + "id": 477, + "name": "parseAndVerifyVAA", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "2962:9:1", + "referencedDeclaration": 781, + "src": "2713:17:1", "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" + "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_ParsedVAA_$408_memory_ptr_$", + "typeString": "function (bytes calldata) view returns (struct Wormhole.ParsedVAA memory)" } }, - "id": 509, + "id": 479, "isConstant": false, "isLValue": false, "isPure": false, @@ -2617,2262 +2173,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2962:49:1", + "src": "2713:22:1", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2947:64:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "3029:19:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 512, - "name": "consumedVAAs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 407, - "src": "3030:12:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 514, - "indexExpression": { - "argumentTypes": null, - "id": 513, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "3043:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3030:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5641412077617320616c7265616479206578656375746564", - "id": 516, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3050:26:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", - "typeString": "literal_string \"VAA was already executed\"" - }, - "value": "VAA was already executed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", - "typeString": "literal_string \"VAA was already executed\"" - } - ], - "id": 511, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "3021:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 517, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3021:56:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 518, - "nodeType": "ExpressionStatement", - "src": "3021:56:1" - }, - { - "assignments": [520], - "declarations": [ - { - "constant": false, - "id": 520, - "mutability": "mutable", - "name": "guardian_set", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 692, - "src": "3088:31:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet" - }, - "typeName": { - "contractScope": null, - "id": 519, - "name": "GuardianSet", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 371, - "src": "3088:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", - "typeString": "struct Wormhole.GuardianSet" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 524, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 521, - "name": "guardian_sets", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 399, - "src": "3122:13:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", - "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" - } - }, - "id": 523, - "indexExpression": { - "argumentTypes": null, - "id": 522, - "name": "vaa_guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 477, - "src": "3136:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3122:37:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage", - "typeString": "struct Wormhole.GuardianSet storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3088:71:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 535, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 529, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 526, - "name": "guardian_set", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 520, - "src": "3177:12:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet memory" - } - }, - "id": 527, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "expiration_time", - "nodeType": "MemberAccess", - "referencedDeclaration": 370, - "src": "3177:28:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 528, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3209:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3177:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 534, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 530, - "name": "guardian_set", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 520, - "src": "3214:12:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet memory" - } - }, - "id": 531, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "expiration_time", - "nodeType": "MemberAccess", - "referencedDeclaration": 370, - "src": "3214:28:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 532, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "3245:5:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 533, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3245:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3214:46:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3177:83:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "677561726469616e20736574206861732065787069726564", - "id": 536, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3262:26:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", - "typeString": "literal_string \"guardian set has expired\"" - }, - "value": "guardian set has expired" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", - "typeString": "literal_string \"guardian set has expired\"" - } - ], - "id": 525, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "3169:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 537, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3169:120:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 538, - "nodeType": "ExpressionStatement", - "src": "3169:120:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 552, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 550, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 540, - "name": "guardian_set", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 520, - "src": "3309:12:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet memory" - } - }, - "id": 541, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "keys", - "nodeType": "MemberAccess", - "referencedDeclaration": 368, - "src": "3309:17:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3309:24:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "34", - "id": 543, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3336:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "3309:28:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 545, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3308:30:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 546, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3341:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "src": "3308:34:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 548, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3307:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 549, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3346:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "3307:40:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "id": 551, - "name": "len_signers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "3351:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3307:55:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f2071756f72756d", - "id": 553, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3364:11:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", - "typeString": "literal_string \"no quorum\"" - }, - "value": "no quorum" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", - "typeString": "literal_string \"no quorum\"" - } - ], - "id": 539, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "3299:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3299:77:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 555, - "nodeType": "ExpressionStatement", - "src": "3299:77:1" - }, - { - "body": { - "id": 629, - "nodeType": "Block", - "src": "3426:334:1", - "statements": [ - { - "assignments": [567], - "declarations": [ - { - "constant": false, - "id": 567, - "mutability": "mutable", - "name": "index", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 629, - "src": "3440:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 566, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3440:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 576, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 574, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "36", - "id": 570, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3466:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_6_by_1", - "typeString": "int_const 6" - }, - "value": "6" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 571, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "3470:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3636", - "id": 572, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3474:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_66_by_1", - "typeString": "int_const 66" - }, - "value": "66" - }, - "src": "3470:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3466:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 568, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3454:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 569, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "3454:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3454:23:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3440:37:1" - }, - { - "assignments": [578], - "declarations": [ - { - "constant": false, - "id": 578, - "mutability": "mutable", - "name": "r", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 629, - "src": "3491:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 577, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3491:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 587, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 585, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "37", - "id": 581, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3517:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_7_by_1", - "typeString": "int_const 7" - }, - "value": "7" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 584, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 582, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "3521:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3636", - "id": 583, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3525:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_66_by_1", - "typeString": "int_const 66" - }, - "value": "66" - }, - "src": "3521:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3517:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 579, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3503:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 580, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toBytes32", - "nodeType": "MemberAccess", - "referencedDeclaration": 298, - "src": "3503:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (bytes32)" - } - }, - "id": 586, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3503:25:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3491:37:1" - }, - { - "assignments": [589], - "declarations": [ - { - "constant": false, - "id": 589, - "mutability": "mutable", - "name": "s", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 629, - "src": "3542:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 588, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3542:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 598, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3339", - "id": 592, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3568:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_39_by_1", - "typeString": "int_const 39" - }, - "value": "39" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 595, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 593, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "3573:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3636", - "id": 594, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3577:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_66_by_1", - "typeString": "int_const 66" - }, - "value": "66" - }, - "src": "3573:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3568:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 590, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3554:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 591, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toBytes32", - "nodeType": "MemberAccess", - "referencedDeclaration": 298, - "src": "3554:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (bytes32)" - } - }, - "id": 597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3554:26:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3542:38:1" - }, - { - "assignments": [600], - "declarations": [ - { - "constant": false, - "id": 600, - "mutability": "mutable", - "name": "v", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 629, - "src": "3594:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 599, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3594:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 609, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3731", - "id": 603, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3616:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_71_by_1", - "typeString": "int_const 71" - }, - "value": "71" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 606, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 604, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "3621:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3636", - "id": 605, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3625:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_66_by_1", - "typeString": "int_const 66" - }, - "value": "66" - }, - "src": "3621:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3616:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 601, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3604:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "3604:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3604:24:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3594:34:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 612, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 610, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 600, - "src": "3642:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "3237", - "id": 611, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3647:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_27_by_1", - "typeString": "int_const 27" - }, - "value": "27" - }, - "src": "3642:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 613, - "nodeType": "ExpressionStatement", - "src": "3642:7:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 625, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 616, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "3681:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 617, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 600, - "src": "3687:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 618, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 578, - "src": "3690:1:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 619, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 589, - "src": "3693:1:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 615, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -6, - "src": "3671:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 620, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3671:24:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 621, - "name": "guardian_set", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 520, - "src": "3699:12:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet memory" - } - }, - "id": 622, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "keys", - "nodeType": "MemberAccess", - "referencedDeclaration": 368, - "src": "3699:17:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 624, - "indexExpression": { - "argumentTypes": null, - "id": 623, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 567, - "src": "3717:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3699:24:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3671:52:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "564141207369676e617475726520696e76616c6964", - "id": 626, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3725:23:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", - "typeString": "literal_string \"VAA signature invalid\"" - }, - "value": "VAA signature invalid" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", - "typeString": "literal_string \"VAA signature invalid\"" - } - ], - "id": 614, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "3663:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 627, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3663:86:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 628, - "nodeType": "ExpressionStatement", - "src": "3663:86:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 562, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 560, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "3404:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 561, - "name": "len_signers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "3408:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3404:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 630, - "initializationExpression": { - "assignments": [557], - "declarations": [ - { - "constant": false, - "id": 557, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 630, - "src": "3392:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 556, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3392:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 559, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 558, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3401:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "3392:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "3421:3:1", - "subExpression": { - "argumentTypes": null, - "id": 563, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "3421:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 565, - "nodeType": "ExpressionStatement", - "src": "3421:3:1" - }, - "nodeType": "ForStatement", - "src": "3387:373:1" - }, - { - "assignments": [632], - "declarations": [ - { - "constant": false, - "id": 632, - "mutability": "mutable", - "name": "action", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 692, - "src": "3770:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 631, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3770:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 639, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 637, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 635, - "name": "offset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "3797:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "hexValue": "34", - "id": 636, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3806:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "3797:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 633, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3785:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 634, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "3785:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 638, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3785:23:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3770:38:1" - }, - { - "assignments": [641], - "declarations": [ - { - "constant": false, - "id": 641, - "mutability": "mutable", - "name": "payload", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 692, - "src": "3818:20:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 640, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3818:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 655, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 644, - "name": "offset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "3851:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "hexValue": "35", - "id": 645, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3860:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "src": "3851:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 653, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 647, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3863:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3863:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 649, - "name": "offset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "3877:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "hexValue": "35", - "id": 650, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3886:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "src": "3877:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 652, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3876:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3863:25:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 642, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3841:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 643, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "slice", - "nodeType": "MemberAccess", - "referencedDeclaration": 55, - "src": "3841:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" - } - }, - "id": 654, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3841:48:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3818:71:1" + "src": "2683:52:1" }, { "condition": { @@ -4881,19 +2190,35 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 658, + "id": 484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 656, - "name": "action", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 632, - "src": "3927:6:1", + "expression": { + "argumentTypes": null, + "id": 481, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "2772:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 482, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "action", + "nodeType": "MemberAccess", + "referencedDeclaration": 405, + "src": "2772:17:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4904,14 +2229,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30783031", - "id": 657, + "id": 483, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3937:4:1", + "src": "2793:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4919,7 +2244,7 @@ }, "value": "0x01" }, - "src": "3927:14:1", + "src": "2772:25:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4932,19 +2257,35 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 673, + "id": 502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 671, - "name": "action", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 632, - "src": "4135:6:1", + "expression": { + "argumentTypes": null, + "id": 499, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "3009:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 500, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "action", + "nodeType": "MemberAccess", + "referencedDeclaration": 405, + "src": "3009:17:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4955,14 +2296,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30783130", - "id": 672, + "id": 501, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4145:4:1", + "src": "3030:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_16_by_1", @@ -4970,16 +2311,16 @@ }, "value": "0x10" }, - "src": "4135:14:1", + "src": "3009:25:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 683, + "id": 513, "nodeType": "Block", - "src": "4202:53:1", + "src": "3098:53:1", "statements": [ { "expression": { @@ -4988,14 +2329,14 @@ { "argumentTypes": null, "hexValue": "696e76616c69642056414120616374696f6e", - "id": 680, + "id": 510, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4223:20:1", + "src": "3119:20:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", @@ -5011,18 +2352,18 @@ "typeString": "literal_string \"invalid VAA action\"" } ], - "id": 679, + "id": 509, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, - "src": "4216:6:1", + "src": "3112:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 681, + "id": 511, "isConstant": false, "isLValue": false, "isPure": false, @@ -5030,26 +2371,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4216:28:1", + "src": "3112:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 682, + "id": 512, "nodeType": "ExpressionStatement", - "src": "4216:28:1" + "src": "3112:28:1" } ] }, - "id": 684, + "id": 514, "nodeType": "IfStatement", - "src": "4131:124:1", + "src": "3005:146:1", "trueBody": { - "id": 678, + "id": 508, "nodeType": "Block", - "src": "4151:45:1", + "src": "3036:56:1", "statements": [ { "expression": { @@ -5057,12 +2398,28 @@ "arguments": [ { "argumentTypes": null, - "id": 675, - "name": "payload", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 641, - "src": "4177:7:1", + "expression": { + "argumentTypes": null, + "id": 504, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "3062:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 505, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 407, + "src": "3062:18:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5076,18 +2433,18 @@ "typeString": "bytes memory" } ], - "id": 674, + "id": 503, "name": "vaaTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 927, - "src": "4165:11:1", + "referencedDeclaration": 1051, + "src": "3050:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory)" } }, - "id": 676, + "id": 506, "isConstant": false, "isLValue": false, "isPure": false, @@ -5095,27 +2452,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4165:20:1", + "src": "3050:31:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 677, + "id": 507, "nodeType": "ExpressionStatement", - "src": "4165:20:1" + "src": "3050:31:1" } ] } }, - "id": 685, + "id": 515, "nodeType": "IfStatement", - "src": "3923:332:1", + "src": "2768:383:1", "trueBody": { - "id": 670, + "id": 498, "nodeType": "Block", - "src": "3943:182:1", + "src": "2799:200:1", "statements": [ { "expression": { @@ -5127,19 +2484,35 @@ "typeIdentifier": "t_uint32", "typeString": "uint32" }, - "id": 662, + "id": 489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 660, - "name": "vaa_guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 477, - "src": "3965:22:1", + "expression": { + "argumentTypes": null, + "id": 486, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "2821:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 487, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "guardian_set_index", + "nodeType": "MemberAccess", + "referencedDeclaration": 401, + "src": "2821:29:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -5149,18 +2522,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 661, + "id": 488, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 401, - "src": "3991:18:1", + "referencedDeclaration": 414, + "src": "2854:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, - "src": "3965:44:1", + "src": "2821:51:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5169,14 +2542,14 @@ { "argumentTypes": null, "hexValue": "6f6e6c79207468652063757272656e7420677561726469616e207365742063616e206368616e67652074686520677561726469616e20736574", - "id": 663, + "id": 490, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4011:59:1", + "src": "2874:59:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", @@ -5196,18 +2569,18 @@ "typeString": "literal_string \"only the current guardian set can change the guardian set\"" } ], - "id": 659, + "id": 485, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "3957:7:1", + "src": "2813:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 664, + "id": 491, "isConstant": false, "isLValue": false, "isPure": false, @@ -5215,16 +2588,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3957:114:1", + "src": "2813:121:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 665, + "id": 492, "nodeType": "ExpressionStatement", - "src": "3957:114:1" + "src": "2813:121:1" }, { "expression": { @@ -5232,12 +2605,28 @@ "arguments": [ { "argumentTypes": null, - "id": 667, - "name": "payload", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 641, - "src": "4106:7:1", + "expression": { + "argumentTypes": null, + "id": 494, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "2969:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 495, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 407, + "src": "2969:18:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5251,18 +2640,18 @@ "typeString": "bytes memory" } ], - "id": 666, + "id": 493, "name": "vaaUpdateGuardianSet", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 792, - "src": "4085:20:1", + "referencedDeclaration": 889, + "src": "2948:20:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory)" } }, - "id": 668, + "id": 496, "isConstant": false, "isLValue": false, "isPure": false, @@ -5270,16 +2659,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4085:29:1", + "src": "2948:40:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 669, + "id": 497, "nodeType": "ExpressionStatement", - "src": "4085:29:1" + "src": "2948:40:1" } ] } @@ -5287,7 +2676,7 @@ { "expression": { "argumentTypes": null, - "id": 690, + "id": 521, "isConstant": false, "isLValue": false, "isPure": false, @@ -5296,26 +2685,42 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 686, + "id": 516, "name": "consumedVAAs", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 407, - "src": "4300:12:1", + "referencedDeclaration": 420, + "src": "3196:12:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 688, + "id": 519, "indexExpression": { "argumentTypes": null, - "id": 687, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "4313:4:1", + "expression": { + "argumentTypes": null, + "id": 517, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "3209:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 518, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 399, + "src": "3209:15:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5326,7 +2731,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4300:18:1", + "src": "3196:29:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5337,14 +2742,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 689, + "id": 520, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4321:4:1", + "src": "3228:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5352,60 +2757,60 @@ }, "value": "true" }, - "src": "4300:25:1", + "src": "3196:36:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 691, + "id": 522, "nodeType": "ExpressionStatement", - "src": "4300:25:1" + "src": "3196:36:1" } ] }, "documentation": null, "functionSelector": "3bc0aee6", - "id": 693, + "id": 524, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 460, + "id": 473, "modifierName": { "argumentTypes": null, - "id": 459, + "id": 472, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3071, - "src": "2518:12:1", + "referencedDeclaration": 3657, + "src": "2660:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2518:12:1" + "src": "2660:12:1" } ], "name": "submitVAA", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 458, + "id": 471, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 457, + "id": 470, "mutability": "mutable", "name": "vaa", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 693, - "src": "2486:18:1", + "scope": 524, + "src": "2628:18:1", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -5413,10 +2818,10 @@ "typeString": "bytes" }, "typeName": { - "id": 456, + "id": 469, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2486:5:1", + "src": "2628:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5426,1270 +2831,258 @@ "visibility": "internal" } ], - "src": "2476:34:1" + "src": "2618:34:1" }, "returnParameters": { - "id": 461, + "id": 474, "nodeType": "ParameterList", "parameters": [], - "src": "2531:0:1" + "src": "2673:0:1" }, - "scope": 1254, - "src": "2458:1874:1", + "scope": 1420, + "src": "2600:639:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { - "id": 791, + "id": 780, "nodeType": "Block", - "src": "4395:755:1", + "src": "3542:1748:1", "statements": [ { - "assignments": [699], - "declarations": [ - { - "constant": false, - "id": 699, - "mutability": "mutable", - "name": "new_guardian_set_index", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 791, - "src": "4405:29:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 698, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "4405:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 704, - "initialValue": { + "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 702, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4451:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "expression": { - "argumentTypes": null, - "id": 700, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 695, - "src": "4437:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 701, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint32", - "nodeType": "MemberAccess", - "referencedDeclaration": 163, - "src": "4437:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint32)" - } - }, - "id": 703, + "id": 538, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4437:16:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4405:48:1" - }, - { - "assignments": [706], - "declarations": [ - { - "constant": false, - "id": 706, - "mutability": "mutable", - "name": "len", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 791, - "src": "4463:9:1", - "stateVariable": false, - "storageLocation": "default", + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 531, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "3552:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 533, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "version", + "nodeType": "MemberAccess", + "referencedDeclaration": 397, + "src": "3552:18:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" - }, - "typeName": { - "id": 705, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4463:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 711, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "34", - "id": 709, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4488:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" } - ], - "expression": { - "argumentTypes": [ + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" + "argumentTypes": null, + "hexValue": "30", + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3585:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" } ], "expression": { - "argumentTypes": null, - "id": 707, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 695, - "src": "4475:4:1", + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 534, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "3573:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "3573:11:1", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, - "id": 708, + "id": 537, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "4475:12:1", + "names": [], + "nodeType": "FunctionCall", + "src": "3573:14:1", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, - "id": 710, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4475:15:1", - "tryCall": false, + "src": "3552:35:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "nodeType": "VariableDeclarationStatement", - "src": "4463:27:1" - }, - { - "assignments": [716], - "declarations": [ - { - "constant": false, - "id": 716, - "mutability": "mutable", - "name": "new_guardians", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 791, - "src": "4501:30:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 714, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4501:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 715, - "length": null, - "nodeType": "ArrayTypeName", - "src": "4501:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 722, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 720, - "name": "len", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "4548:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 719, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "4534:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (address[] memory)" - }, - "typeName": { - "baseType": { - "id": 717, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4538:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 718, - "length": null, - "nodeType": "ArrayTypeName", - "src": "4538:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - } - }, - "id": 721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4534:18:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4501:51:1" - }, - { - "body": { - "id": 750, - "nodeType": "Block", - "src": "4593:103:1", - "statements": [ - { - "assignments": [734], - "declarations": [ - { - "constant": false, - "id": 734, - "mutability": "mutable", - "name": "addr", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 750, - "src": "4607:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 733, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4607:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 743, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 741, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "35", - "id": 737, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4637:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 740, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 738, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "4641:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3230", - "id": 739, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4645:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_20_by_1", - "typeString": "int_const 20" - }, - "value": "20" - }, - "src": "4641:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4637:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 735, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 695, - "src": "4622:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 736, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 82, - "src": "4622:14:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (address)" - } - }, - "id": 742, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4622:26:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4607:41:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 748, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 744, - "name": "new_guardians", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "4662:13:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 746, - "indexExpression": { - "argumentTypes": null, - "id": 745, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "4676:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4662:16:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 747, - "name": "addr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "4681:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4662:23:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 749, - "nodeType": "ExpressionStatement", - "src": "4662:23:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 729, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 727, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "4579:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 728, - "name": "len", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "4583:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4579:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 751, - "initializationExpression": { - "assignments": [724], - "declarations": [ - { - "constant": false, - "id": 724, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 751, - "src": "4567:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 723, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4567:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 726, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 725, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4576:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "4567:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 731, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4588:3:1", - "subExpression": { - "argumentTypes": null, - "id": 730, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "4588:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 732, - "nodeType": "ExpressionStatement", - "src": "4588:3:1" - }, - "nodeType": "ForStatement", - "src": "4562:134:1" - }, - { - "assignments": [753], - "declarations": [ - { - "constant": false, - "id": 753, - "mutability": "mutable", - "name": "old_guardian_set_index", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 791, - "src": "4706:29:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 752, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "4706:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 755, - "initialValue": { - "argumentTypes": null, - "id": 754, - "name": "guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 401, - "src": "4738:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4706:50:1" + "id": 539, + "nodeType": "ExpressionStatement", + "src": "3552:35:1" }, { "expression": { - "argumentTypes": null, - "id": 758, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 756, - "name": "guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 401, - "src": "4766:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 757, - "name": "new_guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 699, - "src": "4787:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "4766:43:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 759, - "nodeType": "ExpressionStatement", - "src": "4766:43:1" - }, - { - "assignments": [761], - "declarations": [ - { - "constant": false, - "id": 761, - "mutability": "mutable", - "name": "new_guardian_set", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 791, - "src": "4820:35:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet" - }, - "typeName": { - "contractScope": null, - "id": 760, - "name": "GuardianSet", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 371, - "src": "4820:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", - "typeString": "struct Wormhole.GuardianSet" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 766, - "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 763, - "name": "new_guardians", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "4870:13:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "hexValue": "30", - "id": 764, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 544, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4885:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 762, - "name": "GuardianSet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "4858:11:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_GuardianSet_$371_storage_ptr_$", - "typeString": "type(struct Wormhole.GuardianSet storage pointer)" - } - }, - "id": 765, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4858:29:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4820:67:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 771, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 767, - "name": "guardian_sets", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 399, - "src": "4897:13:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", - "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" - } - }, - "id": 769, - "indexExpression": { - "argumentTypes": null, - "id": 768, - "name": "guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 401, - "src": "4911:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4897:33:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage", - "typeString": "struct Wormhole.GuardianSet storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 770, - "name": "new_guardian_set", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "4933:16:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet memory" - } - }, - "src": "4897:52:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage", - "typeString": "struct Wormhole.GuardianSet storage ref" - } - }, - "id": 772, - "nodeType": "ExpressionStatement", - "src": "4897:52:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 784, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 773, - "name": "guardian_sets", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 399, - "src": "4959:13:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", - "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" - } - }, - "id": 775, - "indexExpression": { - "argumentTypes": null, - "id": 774, - "name": "old_guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 753, - "src": "4973:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, "isPure": false, "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4959:37:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage", - "typeString": "struct Wormhole.GuardianSet storage ref" - } - }, - "id": 776, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "expiration_time", - "nodeType": "MemberAccess", - "referencedDeclaration": 370, - "src": "4959:53:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { + "leftExpression": { + "argumentTypes": null, + "expression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 779, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "5022:5:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5022:15:1", + "id": 541, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "3605:10:1", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" } + }, + "id": 542, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "version", + "nodeType": "MemberAccess", + "referencedDeclaration": 397, + "src": "3605:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 778, + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 543, "isConstant": false, "isLValue": false, "isPure": true, + "kind": "number", "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5015:6:1", + "nodeType": "Literal", + "src": "3627:1:1", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" }, - "typeName": { - "id": 777, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "5015:6:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } + "value": "1" }, - "id": 781, + "src": "3605:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5641412076657273696f6e20696e636f6d70617469626c65", + "id": 545, "isConstant": false, "isLValue": false, - "isPure": false, - "kind": "typeConversion", + "isPure": true, + "kind": "string", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5015:23:1", - "tryCall": false, + "nodeType": "Literal", + "src": "3630:26:1", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 782, - "name": "guardian_set_expirity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 403, - "src": "5041:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "5015:47:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "4959:103:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 785, - "nodeType": "ExpressionStatement", - "src": "4959:103:1" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 787, - "name": "old_guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 753, - "src": "5100:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "argumentTypes": null, - "id": 788, - "name": "guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 401, - "src": "5124:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } + "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", + "typeString": "literal_string \"VAA version incompatible\"" + }, + "value": "VAA version incompatible" } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint32", - "typeString": "uint32" + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - "typeIdentifier": "t_uint32", - "typeString": "uint32" + "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", + "typeString": "literal_string \"VAA version incompatible\"" } ], - "id": 786, - "name": "LogGuardianSetChanged", + "id": 540, + "name": "require", "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 377, - "src": "5078:21:1", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "3597:7:1", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint32_$returns$__$", - "typeString": "function (uint32,uint32)" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 789, + "id": 546, "isConstant": false, "isLValue": false, "isPure": false, @@ -6697,234 +3090,184 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5078:65:1", + "src": "3597:60:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 790, - "nodeType": "EmitStatement", - "src": "5073:70:1" - } - ] - }, - "documentation": null, - "id": 792, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "vaaUpdateGuardianSet", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 696, - "nodeType": "ParameterList", - "parameters": [ + "id": 547, + "nodeType": "ExpressionStatement", + "src": "3597:60:1" + }, { - "constant": false, - "id": 695, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 792, - "src": "4368:17:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 694, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4368:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4367:19:1" - }, - "returnParameters": { - "id": 697, - "nodeType": "ParameterList", - "parameters": [], - "src": "4395:0:1" - }, - "scope": 1254, - "src": "4338:812:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 926, - "nodeType": "Block", - "src": "5204:1399:1", - "statements": [ - { - "assignments": [798], - "declarations": [ - { - "constant": false, - "id": 798, - "mutability": "mutable", - "name": "source_chain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 926, - "src": "5257:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 797, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "5257:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 803, - "initialValue": { + "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "34", - "id": 801, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5291:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - } - ], - "expression": { - "argumentTypes": null, - "id": 799, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "5278:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "5278:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 802, + "id": 555, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5278:15:1", - "tryCall": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 548, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "3714:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 550, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "guardian_set_index", + "nodeType": "MemberAccess", + "referencedDeclaration": 401, + "src": "3714:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3759:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "id": 551, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "3746:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint32", + "nodeType": "MemberAccess", + "referencedDeclaration": 163, + "src": "3746:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint32)" + } + }, + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3746:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "3714:47:1", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint32", + "typeString": "uint32" } }, - "nodeType": "VariableDeclarationStatement", - "src": "5257:36:1" + "id": 556, + "nodeType": "ExpressionStatement", + "src": "3714:47:1" }, { - "assignments": [805], + "assignments": [558], "declarations": [ { "constant": false, - "id": 805, + "id": 558, "mutability": "mutable", - "name": "target_chain", + "name": "len_signers", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 926, - "src": "5304:18:1", + "scope": 780, + "src": "3772:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 804, - "name": "uint8", + "id": 557, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5304:5:1", + "src": "3772:7:1", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "id": 810, + "id": 563, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "35", - "id": 808, + "id": 561, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5338:1:1", + "src": "3806:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -6942,18 +3285,18 @@ ], "expression": { "argumentTypes": null, - "id": 806, - "name": "data", + "id": 559, + "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "5325:4:1", + "referencedDeclaration": 526, + "src": "3794:3:1", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" } }, - "id": 807, + "id": 560, "isConstant": false, "isLValue": false, "isPure": false, @@ -6961,13 +3304,13 @@ "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, - "src": "5325:12:1", + "src": "3794:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, - "id": 809, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -6975,7 +3318,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5325:15:1", + "src": "3794:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -6983,35 +3326,3768 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5304:36:1" + "src": "3772:36:1" }, { - "assignments": [812], + "assignments": [565], "declarations": [ { "constant": false, - "id": 812, + "id": 565, "mutability": "mutable", - "name": "target_address", + "name": "offset", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 926, - "src": "5459:22:1", + "scope": 780, + "src": "3818:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 811, - "name": "address", + "id": 564, + "name": "uint", "nodeType": "ElementaryTypeName", - "src": "5459:7:1", - "stateMutability": "nonpayable", + "src": "3818:4:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 571, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "36", + "id": 566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3832:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_6_by_1", + "typeString": "int_const 6" + }, + "value": "6" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3636", + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3836:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_66_by_1", + "typeString": "int_const 66" + }, + "value": "66" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 568, + "name": "len_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "3841:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3836:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3832:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3818:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 572, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "3897:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 403, + "src": "3897:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 577, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "3933:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 575, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "3920:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint32", + "nodeType": "MemberAccess", + "referencedDeclaration": 163, + "src": "3920:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint32)" + } + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3920:20:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "3897:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 580, + "nodeType": "ExpressionStatement", + "src": "3897:43:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 581, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "3976:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 583, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 399, + "src": "3976:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 587, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "4014:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 588, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "4022:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4022:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 590, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "4035:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4022:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 585, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "4004:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "slice", + "nodeType": "MemberAccess", + "referencedDeclaration": 55, + "src": "4004:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + } + }, + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4004:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 584, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3994:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3994:49:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3976:67:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 595, + "nodeType": "ExpressionStatement", + "src": "3976:67:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4061:30:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 597, + "name": "consumedVAAs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "4062:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 600, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 598, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "4075:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 599, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 399, + "src": "4075:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4062:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5641412077617320616c7265616479206578656375746564", + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4093:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", + "typeString": "literal_string \"VAA was already executed\"" + }, + "value": "VAA was already executed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", + "typeString": "literal_string \"VAA was already executed\"" + } + ], + "id": 596, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4053:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4053:67:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 604, + "nodeType": "ExpressionStatement", + "src": "4053:67:1" + }, + { + "assignments": [606], + "declarations": [ + { + "constant": false, + "id": 606, + "mutability": "mutable", + "name": "guardian_set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 780, + "src": "4131:31:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet" + }, + "typeName": { + "contractScope": null, + "id": 605, + "name": "GuardianSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 371, + "src": "4131:11:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", + "typeString": "struct Wormhole.GuardianSet" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 611, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 607, + "name": "guardian_sets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "4165:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", + "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" + } + }, + "id": 610, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 608, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "4179:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 609, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "guardian_set_index", + "nodeType": "MemberAccess", + "referencedDeclaration": 401, + "src": "4179:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4165:44:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage", + "typeString": "struct Wormhole.GuardianSet storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4131:78:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 613, + "name": "guardian_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "4227:12:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "id": 614, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 368, + "src": "4227:17:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4227:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4254:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4227:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "696e76616c696420677561726469616e20736574", + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4257:22:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ef4d0f2354b2279f26c4ba4477a0c338dcdd31fbb9caa6ef52ec7856b55556f3", + "typeString": "literal_string \"invalid guardian set\"" + }, + "value": "invalid guardian set" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ef4d0f2354b2279f26c4ba4477a0c338dcdd31fbb9caa6ef52ec7856b55556f3", + "typeString": "literal_string \"invalid guardian set\"" + } + ], + "id": 612, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4219:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4219:61:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 620, + "nodeType": "ExpressionStatement", + "src": "4219:61:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 622, + "name": "guardian_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "4298:12:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "id": 623, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiration_time", + "nodeType": "MemberAccess", + "referencedDeclaration": 370, + "src": "4298:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4330:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4298:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 626, + "name": "guardian_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "4335:12:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "id": 627, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiration_time", + "nodeType": "MemberAccess", + "referencedDeclaration": 370, + "src": "4335:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 628, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "4366:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4366:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4335:46:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4298:83:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "677561726469616e20736574206861732065787069726564", + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4383:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", + "typeString": "literal_string \"guardian set has expired\"" + }, + "value": "guardian set has expired" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", + "typeString": "literal_string \"guardian set has expired\"" + } + ], + "id": 621, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4290:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4290:120:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 634, + "nodeType": "ExpressionStatement", + "src": "4290:120:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 636, + "name": "guardian_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "4527:12:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "id": 637, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 368, + "src": "4527:17:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4527:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4554:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "4527:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4559:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "4527:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 643, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4526:35:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4564:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "4526:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 646, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4525:41:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4569:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "4525:46:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4574:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4525:50:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 651, + "name": "len_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "4579:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4525:65:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6e6f2071756f72756d", + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4592:11:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", + "typeString": "literal_string \"no quorum\"" + }, + "value": "no quorum" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", + "typeString": "literal_string \"no quorum\"" + } + ], + "id": 635, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4517:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4517:87:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 655, + "nodeType": "ExpressionStatement", + "src": "4517:87:1" + }, + { + "assignments": [657], + "declarations": [ + { + "constant": false, + "id": 657, + "mutability": "mutable", + "name": "last_index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 780, + "src": "4615:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + }, + "typeName": { + "id": 656, + "name": "int16", + "nodeType": "ElementaryTypeName", + "src": "4615:5:1", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 660, + "initialValue": { + "argumentTypes": null, + "id": 659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "4634:3:1", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4636:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4615:22:1" + }, + { + "body": { + "id": 749, + "nodeType": "Block", + "src": "4686:465:1", + "statements": [ + { + "assignments": [672], + "declarations": [ + { + "constant": false, + "id": 672, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 749, + "src": "4700:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 671, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4700:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 681, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "36", + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4726:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_6_by_1", + "typeString": "int_const 6" + }, + "value": "6" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 676, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "4730:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3636", + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4734:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_66_by_1", + "typeString": "int_const 66" + }, + "value": "66" + }, + "src": "4730:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4726:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 673, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "4714:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "4714:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4714:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4700:37:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int16", + "typeString": "int16" + }, + "id": 685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 683, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "4759:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 684, + "name": "last_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 657, + "src": "4767:10:1", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "src": "4759:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7369676e617475726520696e6469636573206d75737420626520617363656e64696e67", + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4779:37:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_de9ff8e5647eeed7691d313f96ed0065761ad2da429d76b3b7868b564890def8", + "typeString": "literal_string \"signature indices must be ascending\"" + }, + "value": "signature indices must be ascending" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_de9ff8e5647eeed7691d313f96ed0065761ad2da429d76b3b7868b564890def8", + "typeString": "literal_string \"signature indices must be ascending\"" + } + ], + "id": 682, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "4751:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4751:66:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 688, + "nodeType": "ExpressionStatement", + "src": "4751:66:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 689, + "name": "last_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 657, + "src": "4831:10:1", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 692, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "4850:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4844:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int16_$", + "typeString": "type(int16)" + }, + "typeName": { + "id": 690, + "name": "int16", + "nodeType": "ElementaryTypeName", + "src": "4844:5:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4844:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "src": "4831:25:1", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "id": 695, + "nodeType": "ExpressionStatement", + "src": "4831:25:1" + }, + { + "assignments": [697], + "declarations": [ + { + "constant": false, + "id": 697, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 749, + "src": "4871:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 696, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4871:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 706, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "37", + "id": 700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4897:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_7_by_1", + "typeString": "int_const 7" + }, + "value": "7" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 701, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "4901:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3636", + "id": 702, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4905:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_66_by_1", + "typeString": "int_const 66" + }, + "value": "66" + }, + "src": "4901:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4897:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 698, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "4883:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toBytes32", + "nodeType": "MemberAccess", + "referencedDeclaration": 298, + "src": "4883:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (bytes32)" + } + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4883:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4871:37:1" + }, + { + "assignments": [708], + "declarations": [ + { + "constant": false, + "id": 708, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 749, + "src": "4922:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 707, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4922:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 717, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3339", + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4948:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_39_by_1", + "typeString": "int_const 39" + }, + "value": "39" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 712, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "4953:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3636", + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4957:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_66_by_1", + "typeString": "int_const 66" + }, + "value": "66" + }, + "src": "4953:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4948:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 709, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "4934:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toBytes32", + "nodeType": "MemberAccess", + "referencedDeclaration": 298, + "src": "4934:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (bytes32)" + } + }, + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4934:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4922:38:1" + }, + { + "assignments": [719], + "declarations": [ + { + "constant": false, + "id": 719, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 749, + "src": "4974:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 718, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4974:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 728, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3731", + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4996:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_71_by_1", + "typeString": "int_const 71" + }, + "value": "71" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 723, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "5001:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3636", + "id": 724, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5005:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_66_by_1", + "typeString": "int_const 66" + }, + "value": "66" + }, + "src": "5001:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4996:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 720, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "4984:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "4984:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4984:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4974:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 729, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "5022:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3237", + "id": 730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5027:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "5022:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 732, + "nodeType": "ExpressionStatement", + "src": "5022:7:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 735, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "5061:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 736, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 399, + "src": "5061:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 737, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "5078:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 738, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 697, + "src": "5081:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 739, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "5084:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 734, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "5051:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5051:35:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 741, + "name": "guardian_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "5090:12:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "id": 742, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 368, + "src": "5090:17:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 744, + "indexExpression": { + "argumentTypes": null, + "id": 743, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "5108:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5090:24:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5051:63:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "564141207369676e617475726520696e76616c6964", + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5116:23:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", + "typeString": "literal_string \"VAA signature invalid\"" + }, + "value": "VAA signature invalid" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", + "typeString": "literal_string \"VAA signature invalid\"" + } + ], + "id": 733, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "5043:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5043:97:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 748, + "nodeType": "ExpressionStatement", + "src": "5043:97:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 665, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "4664:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 666, + "name": "len_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "4668:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4664:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 750, + "initializationExpression": { + "assignments": [662], + "declarations": [ + { + "constant": false, + "id": 662, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 750, + "src": "4652:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 661, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4652:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 664, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4661:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4652:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4681:3:1", + "subExpression": { + "argumentTypes": null, + "id": 668, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "4681:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 670, + "nodeType": "ExpressionStatement", + "src": "4681:3:1" + }, + "nodeType": "ForStatement", + "src": "4647:504:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 751, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "5161:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 753, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "action", + "nodeType": "MemberAccess", + "referencedDeclaration": 405, + "src": "5161:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 756, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "5193:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5202:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "5193:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 754, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "5181:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "5181:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5181:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "5161:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 761, + "nodeType": "ExpressionStatement", + "src": "5161:43:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 762, + "name": "parsed_vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "5214:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA memory" + } + }, + "id": 764, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 407, + "src": "5214:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 767, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "5245:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 768, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5254:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "5245:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 770, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "5257:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5257:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 772, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "5271:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5280:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "5271:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 775, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5270:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5257:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 765, + "name": "vaa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "5235:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "slice", + "nodeType": "MemberAccess", + "referencedDeclaration": 55, + "src": "5235:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + } + }, + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5235:48:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "5214:69:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 779, + "nodeType": "ExpressionStatement", + "src": "5214:69:1" + } + ] + }, + "documentation": null, + "functionSelector": "600b9aa6", + "id": 781, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "parseAndVerifyVAA", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 527, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 526, + "mutability": "mutable", + "name": "vaa", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 781, + "src": "3472:18:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 525, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3472:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3471:20:1" + }, + "returnParameters": { + "id": 530, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 529, + "mutability": "mutable", + "name": "parsed_vaa", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 781, + "src": "3513:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_memory_ptr", + "typeString": "struct Wormhole.ParsedVAA" + }, + "typeName": { + "contractScope": null, + "id": 528, + "name": "ParsedVAA", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 408, + "src": "3513:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParsedVAA_$408_storage_ptr", + "typeString": "struct Wormhole.ParsedVAA" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3512:29:1" + }, + "scope": 1420, + "src": "3445:1845:1", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 888, + "nodeType": "Block", + "src": "5353:859:1", + "statements": [ + { + "assignments": [787], + "declarations": [ + { + "constant": false, + "id": 787, + "mutability": "mutable", + "name": "new_guardian_set_index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 888, + "src": "5363:29:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 786, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "5363:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 792, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 790, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5409:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 788, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 783, + "src": "5395:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint32", + "nodeType": "MemberAccess", + "referencedDeclaration": 163, + "src": "5395:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint32)" + } + }, + "id": 791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5395:16:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5363:48:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 794, + "name": "new_guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "5429:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 795, + "name": "guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "5455:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 796, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5476:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5455:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "5429:48:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "696e646578206d75737420696e63726561736520696e207374657073206f662031", + "id": 799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5479:35:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9c35350c4790f34190b54478b12348e0cbd9c4c717b5d4a6ca5709d71c4f33d", + "typeString": "literal_string \"index must increase in steps of 1\"" + }, + "value": "index must increase in steps of 1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a9c35350c4790f34190b54478b12348e0cbd9c4c717b5d4a6ca5709d71c4f33d", + "typeString": "literal_string \"index must increase in steps of 1\"" + } + ], + "id": 793, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "5421:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5421:94:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 801, + "nodeType": "ExpressionStatement", + "src": "5421:94:1" + }, + { + "assignments": [803], + "declarations": [ + { + "constant": false, + "id": 803, + "mutability": "mutable", + "name": "len", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 888, + "src": "5525:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 802, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5525:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 808, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "34", + "id": 806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5550:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + ], + "expression": { + "argumentTypes": null, + "id": 804, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 783, + "src": "5537:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "5537:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5537:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5525:27:1" + }, + { + "assignments": [813], + "declarations": [ + { + "constant": false, + "id": 813, + "mutability": "mutable", + "name": "new_guardians", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 888, + "src": "5563:30:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 811, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5563:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 812, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5563:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" } }, "value": null, @@ -7019,6 +7095,1322 @@ } ], "id": 819, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 817, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "5610:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "5596:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5600:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 815, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5600:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5596:18:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5563:51:1" + }, + { + "body": { + "id": 847, + "nodeType": "Block", + "src": "5655:103:1", + "statements": [ + { + "assignments": [831], + "declarations": [ + { + "constant": false, + "id": 831, + "mutability": "mutable", + "name": "addr", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 847, + "src": "5669:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 830, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5669:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 840, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "35", + "id": 834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5699:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 835, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "5703:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3230", + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5707:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "src": "5703:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5699:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 832, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 783, + "src": "5684:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 82, + "src": "5684:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (address)" + } + }, + "id": 839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5684:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5669:41:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 841, + "name": "new_guardians", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 813, + "src": "5724:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 843, + "indexExpression": { + "argumentTypes": null, + "id": 842, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "5738:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5724:16:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 844, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "5743:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5724:23:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 846, + "nodeType": "ExpressionStatement", + "src": "5724:23:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 824, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "5641:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 825, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "5645:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "5641:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 848, + "initializationExpression": { + "assignments": [821], + "declarations": [ + { + "constant": false, + "id": 821, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 848, + "src": "5629:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 820, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5629:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 823, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5638:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5629:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5650:3:1", + "subExpression": { + "argumentTypes": null, + "id": 827, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "5650:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 829, + "nodeType": "ExpressionStatement", + "src": "5650:3:1" + }, + "nodeType": "ForStatement", + "src": "5624:134:1" + }, + { + "assignments": [850], + "declarations": [ + { + "constant": false, + "id": 850, + "mutability": "mutable", + "name": "old_guardian_set_index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 888, + "src": "5768:29:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 849, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "5768:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 852, + "initialValue": { + "argumentTypes": null, + "id": 851, + "name": "guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "5800:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5768:50:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 853, + "name": "guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "5828:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 854, + "name": "new_guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "5849:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "5828:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 856, + "nodeType": "ExpressionStatement", + "src": "5828:43:1" + }, + { + "assignments": [858], + "declarations": [ + { + "constant": false, + "id": 858, + "mutability": "mutable", + "name": "new_guardian_set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 888, + "src": "5882:35:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet" + }, + "typeName": { + "contractScope": null, + "id": 857, + "name": "GuardianSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 371, + "src": "5882:11:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", + "typeString": "struct Wormhole.GuardianSet" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 863, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 860, + "name": "new_guardians", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 813, + "src": "5932:13:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5947:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 859, + "name": "GuardianSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "5920:11:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_GuardianSet_$371_storage_ptr_$", + "typeString": "type(struct Wormhole.GuardianSet storage pointer)" + } + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5920:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5882:67:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 864, + "name": "guardian_sets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "5959:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", + "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" + } + }, + "id": 866, + "indexExpression": { + "argumentTypes": null, + "id": 865, + "name": "guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "5973:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5959:33:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage", + "typeString": "struct Wormhole.GuardianSet storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 867, + "name": "new_guardian_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 858, + "src": "5995:16:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", + "typeString": "struct Wormhole.GuardianSet memory" + } + }, + "src": "5959:52:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage", + "typeString": "struct Wormhole.GuardianSet storage ref" + } + }, + "id": 869, + "nodeType": "ExpressionStatement", + "src": "5959:52:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 870, + "name": "guardian_sets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "6021:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", + "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" + } + }, + "id": 872, + "indexExpression": { + "argumentTypes": null, + "id": 871, + "name": "old_guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 850, + "src": "6035:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6021:37:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GuardianSet_$371_storage", + "typeString": "struct Wormhole.GuardianSet storage ref" + } + }, + "id": 873, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiration_time", + "nodeType": "MemberAccess", + "referencedDeclaration": 370, + "src": "6021:53:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 876, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "6084:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6084:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6077:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 874, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "6077:6:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6077:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 879, + "name": "guardian_set_expirity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "6103:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "6077:47:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "6021:103:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 882, + "nodeType": "ExpressionStatement", + "src": "6021:103:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 884, + "name": "old_guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 850, + "src": "6162:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "argumentTypes": null, + "id": 885, + "name": "guardian_set_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "6186:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 883, + "name": "LogGuardianSetChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "6140:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint32_$returns$__$", + "typeString": "function (uint32,uint32)" + } + }, + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6140:65:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 887, + "nodeType": "EmitStatement", + "src": "6135:70:1" + } + ] + }, + "documentation": null, + "id": 889, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "vaaUpdateGuardianSet", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 784, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 783, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 889, + "src": "5326:17:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 782, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5326:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5325:19:1" + }, + "returnParameters": { + "id": 785, + "nodeType": "ParameterList", + "parameters": [], + "src": "5353:0:1" + }, + "scope": 1420, + "src": "5296:916:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1050, + "nodeType": "Block", + "src": "6266:1644:1", + "statements": [ + { + "assignments": [895], + "declarations": [ + { + "constant": false, + "id": 895, + "mutability": "mutable", + "name": "source_chain", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1050, + "src": "6319:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 894, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6319:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 900, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "34", + "id": 898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6353:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + ], + "expression": { + "argumentTypes": null, + "id": 896, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "6340:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "6340:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6340:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6319:36:1" + }, + { + "assignments": [902], + "declarations": [ + { + "constant": false, + "id": 902, + "mutability": "mutable", + "name": "target_chain", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1050, + "src": "6366:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 901, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6366:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 907, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "35", + "id": 905, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6400:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + } + ], + "expression": { + "argumentTypes": null, + "id": 903, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "6387:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "6387:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6387:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6366:36:1" + }, + { + "assignments": [909], + "declarations": [ + { + "constant": false, + "id": 909, + "mutability": "mutable", + "name": "target_address", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1050, + "src": "6521:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 908, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6521:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 916, "initialValue": { "argumentTypes": null, "arguments": [ @@ -7028,7 +8420,7 @@ "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" }, - "id": 817, + "id": 914, "isConstant": false, "isLValue": false, "isPure": true, @@ -7036,14 +8428,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3338", - "id": 815, + "id": 912, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5499:2:1", + "src": "6561:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_38_by_1", @@ -7056,14 +8448,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3132", - "id": 816, + "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5504:2:1", + "src": "6566:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_12_by_1", @@ -7071,7 +8463,7 @@ }, "value": "12" }, - "src": "5499:7:1", + "src": "6561:7:1", "typeDescriptions": { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" @@ -7087,18 +8479,18 @@ ], "expression": { "argumentTypes": null, - "id": 813, + "id": 910, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "5484:4:1", + "referencedDeclaration": 891, + "src": "6546:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 814, + "id": 911, "isConstant": false, "isLValue": false, "isPure": false, @@ -7106,13 +8498,13 @@ "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, - "src": "5484:14:1", + "src": "6546:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, - "id": 818, + "id": 915, "isConstant": false, "isLValue": false, "isPure": false, @@ -7120,7 +8512,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5484:23:1", + "src": "6546:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7128,20 +8520,20 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5459:48:1" + "src": "6521:48:1" }, { - "assignments": [821], + "assignments": [918], "declarations": [ { "constant": false, - "id": 821, + "id": 918, "mutability": "mutable", "name": "token_chain", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 926, - "src": "5518:17:1", + "scope": 1050, + "src": "6580:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7149,10 +8541,10 @@ "typeString": "uint8" }, "typeName": { - "id": 820, + "id": 917, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5518:5:1", + "src": "6580:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7162,21 +8554,21 @@ "visibility": "internal" } ], - "id": 826, + "id": 923, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "3730", - "id": 824, + "id": 921, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5551:2:1", + "src": "6613:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_70_by_1", @@ -7194,18 +8586,18 @@ ], "expression": { "argumentTypes": null, - "id": 822, + "id": 919, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "5538:4:1", + "referencedDeclaration": 891, + "src": "6600:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 823, + "id": 920, "isConstant": false, "isLValue": false, "isPure": false, @@ -7213,13 +8605,13 @@ "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, - "src": "5538:12:1", + "src": "6600:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, - "id": 825, + "id": 922, "isConstant": false, "isLValue": false, "isPure": false, @@ -7227,7 +8619,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5538:16:1", + "src": "6600:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -7235,20 +8627,20 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5518:36:1" + "src": "6580:36:1" }, { - "assignments": [828], + "assignments": [925], "declarations": [ { "constant": false, - "id": 828, + "id": 925, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 926, - "src": "5618:14:1", + "scope": 1050, + "src": "6680:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7256,10 +8648,10 @@ "typeString": "uint256" }, "typeName": { - "id": 827, + "id": 924, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5618:7:1", + "src": "6680:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7269,21 +8661,21 @@ "visibility": "internal" } ], - "id": 833, + "id": 930, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "313034", - "id": 831, + "id": 928, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5650:3:1", + "src": "6712:3:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_104_by_1", @@ -7301,18 +8693,18 @@ ], "expression": { "argumentTypes": null, - "id": 829, + "id": 926, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "5635:4:1", + "referencedDeclaration": 891, + "src": "6697:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 830, + "id": 927, "isConstant": false, "isLValue": false, "isPure": false, @@ -7320,13 +8712,13 @@ "memberName": "toUint256", "nodeType": "MemberAccess", "referencedDeclaration": 271, - "src": "5635:14:1", + "src": "6697:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint256)" } }, - "id": 832, + "id": 929, "isConstant": false, "isLValue": false, "isPure": false, @@ -7334,7 +8726,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5635:19:1", + "src": "6697:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7342,7 +8734,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5618:36:1" + "src": "6680:36:1" }, { "expression": { @@ -7354,19 +8746,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 837, + "id": 934, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 835, + "id": 932, "name": "source_chain", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 798, - "src": "5673:12:1", + "referencedDeclaration": 895, + "src": "6735:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7376,18 +8768,18 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 836, + "id": 933, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 805, - "src": "5689:12:1", + "referencedDeclaration": 902, + "src": "6751:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "5673:28:1", + "src": "6735:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7396,14 +8788,14 @@ { "argumentTypes": null, "hexValue": "73616d6520636861696e207472616e736665727320617265206e6f7420737570706f72746564", - "id": 838, + "id": 935, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5703:40:1", + "src": "6765:40:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", @@ -7423,18 +8815,18 @@ "typeString": "literal_string \"same chain transfers are not supported\"" } ], - "id": 834, + "id": 931, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "5665:7:1", + "src": "6727:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 839, + "id": 936, "isConstant": false, "isLValue": false, "isPure": false, @@ -7442,16 +8834,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5665:79:1", + "src": "6727:79:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 840, + "id": 937, "nodeType": "ExpressionStatement", - "src": "5665:79:1" + "src": "6727:79:1" }, { "expression": { @@ -7463,19 +8855,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 844, + "id": 941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 842, + "id": 939, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 805, - "src": "5762:12:1", + "referencedDeclaration": 902, + "src": "6824:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7485,18 +8877,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 843, + "id": 940, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, - "src": "5778:8:1", + "src": "6840:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "5762:24:1", + "src": "6824:24:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7505,14 +8897,14 @@ { "argumentTypes": null, "hexValue": "7472616e73666572206d75737420626520696e636f6d696e67", - "id": 845, + "id": 942, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5788:27:1", + "src": "6850:27:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", @@ -7532,18 +8924,18 @@ "typeString": "literal_string \"transfer must be incoming\"" } ], - "id": 841, + "id": 938, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "5754:7:1", + "src": "6816:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 846, + "id": 943, "isConstant": false, "isLValue": false, "isPure": false, @@ -7551,16 +8943,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5754:62:1", + "src": "6816:62:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 847, + "id": 944, "nodeType": "ExpressionStatement", - "src": "5754:62:1" + "src": "6816:62:1" }, { "condition": { @@ -7569,19 +8961,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 850, + "id": 947, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 848, + "id": 945, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 821, - "src": "5831:11:1", + "referencedDeclaration": 918, + "src": "6893:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7591,40 +8983,40 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 849, + "id": 946, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, - "src": "5846:8:1", + "src": "6908:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "5831:23:1", + "src": "6893:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 924, + "id": 1048, "nodeType": "Block", - "src": "6452:145:1", + "src": "7514:390:1", "statements": [ { - "assignments": [908], + "assignments": [1005], "declarations": [ { "constant": false, - "id": 908, + "id": 1005, "mutability": "mutable", "name": "token_address", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 924, - "src": "6466:21:1", + "scope": 1048, + "src": "7528:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7632,10 +9024,10 @@ "typeString": "address" }, "typeName": { - "id": 907, + "id": 1004, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6466:7:1", + "src": "7528:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7646,7 +9038,7 @@ "visibility": "internal" } ], - "id": 915, + "id": 1012, "initialValue": { "argumentTypes": null, "arguments": [ @@ -7656,7 +9048,7 @@ "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" }, - "id": 913, + "id": 1010, "isConstant": false, "isLValue": false, "isPure": true, @@ -7664,14 +9056,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3731", - "id": 911, + "id": 1008, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6505:2:1", + "src": "7567:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_71_by_1", @@ -7684,14 +9076,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3132", - "id": 912, + "id": 1009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6510:2:1", + "src": "7572:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_12_by_1", @@ -7699,7 +9091,7 @@ }, "value": "12" }, - "src": "6505:7:1", + "src": "7567:7:1", "typeDescriptions": { "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" @@ -7715,18 +9107,18 @@ ], "expression": { "argumentTypes": null, - "id": 909, + "id": 1006, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "6490:4:1", + "referencedDeclaration": 891, + "src": "7552:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 910, + "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, @@ -7734,13 +9126,13 @@ "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, - "src": "6490:14:1", + "src": "7552:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, - "id": 914, + "id": 1011, "isConstant": false, "isLValue": false, "isPure": false, @@ -7748,7 +9140,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6490:23:1", + "src": "7552:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7756,61 +9148,57 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "6466:47:1" + "src": "7528:47:1" }, { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 920, - "name": "target_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 812, - "src": "6563:14:1", + "assignments": [1014], + "declarations": [ + { + "constant": false, + "id": 1014, + "mutability": "mutable", + "name": "decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1048, + "src": "7590:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1013, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7590:5:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, - { - "argumentTypes": null, - "id": 921, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 828, - "src": "6579:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], + "value": null, + "visibility": "internal" + } + ], + "id": 1020, + "initialValue": { + "argumentTypes": null, + "arguments": [], "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], + "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 917, + "id": 1016, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "6535:13:1", + "referencedDeclaration": 1005, + "src": "7613:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7824,18 +9212,18 @@ "typeString": "address" } ], - "id": 916, - "name": "IERC20", + "id": 1015, + "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2615, - "src": "6528:6:1", + "referencedDeclaration": 3008, + "src": "7607:5:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", - "typeString": "type(contract IERC20)" + "typeIdentifier": "t_type$_t_contract$_ERC20_$3008_$", + "typeString": "type(contract ERC20)" } }, - "id": 918, + "id": 1017, "isConstant": false, "isLValue": false, "isPure": false, @@ -7843,28 +9231,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6528:21:1", + "src": "7607:20:1", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2615", - "typeString": "contract IERC20" + "typeIdentifier": "t_contract$_ERC20_$3008", + "typeString": "contract ERC20" } }, - "id": 919, + "id": 1018, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "safeTransfer", + "memberName": "decimals", "nodeType": "MemberAccess", - "referencedDeclaration": 2649, - "src": "6528:34:1", + "referencedDeclaration": 2584, + "src": "7607:29:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2615_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2615_$", - "typeString": "function (contract IERC20,address,uint256)" + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" } }, - "id": 922, + "id": 1019, "isConstant": false, "isLValue": false, "isPure": false, @@ -7872,2747 +9260,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6528:58:1", + "src": "7607:31:1", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 923, - "nodeType": "ExpressionStatement", - "src": "6528:58:1" - } - ] - }, - "id": 925, - "nodeType": "IfStatement", - "src": "5827:770:1", - "trueBody": { - "id": 906, - "nodeType": "Block", - "src": "5856:590:1", - "statements": [ - { - "assignments": [852], - "declarations": [ - { - "constant": false, - "id": 852, - "mutability": "mutable", - "name": "token_address", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 906, - "src": "5870:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 851, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5870:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 857, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "3731", - "id": 855, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5909:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_71_by_1", - "typeString": "int_const 71" - }, - "value": "71" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_71_by_1", - "typeString": "int_const 71" - } - ], - "expression": { - "argumentTypes": null, - "id": 853, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "5894:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 854, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toBytes32", - "nodeType": "MemberAccess", - "referencedDeclaration": 298, - "src": "5894:14:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (bytes32)" - } - }, - "id": 856, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5894:18:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "5870:42:1" - }, - { - "assignments": [859], - "declarations": [ - { - "constant": false, - "id": 859, - "mutability": "mutable", - "name": "asset_id", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 906, - "src": "5926:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 858, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5926:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 867, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 863, - "name": "token_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 821, - "src": "5972:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 864, - "name": "token_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "5985:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "argumentTypes": null, - "id": 861, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "5955:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 862, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5955:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 865, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5955:44:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 860, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "5945:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 866, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5945:55:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5926:74:1" - }, - { - "assignments": [869], - "declarations": [ - { - "constant": false, - "id": 869, - "mutability": "mutable", - "name": "wrapped_asset", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 906, - "src": "6092:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 868, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6092:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 873, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 870, - "name": "wrappedAssets", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "6116:13:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 872, - "indexExpression": { - "argumentTypes": null, - "id": 871, - "name": "asset_id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 859, - "src": "6130:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6116:23:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6092:47:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 879, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 874, - "name": "wrapped_asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 869, - "src": "6157:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 877, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6182:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 876, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6174:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 875, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6174:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 878, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6174:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "6157:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 897, - "nodeType": "IfStatement", - "src": "6153:212:1", - "trueBody": { - "id": 896, - "nodeType": "Block", - "src": "6186:179:1", - "statements": [ - { - "assignments": [881], - "declarations": [ - { - "constant": false, - "id": 881, - "mutability": "mutable", - "name": "asset_decimals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 896, - "src": "6204:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 880, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6204:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 886, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "313033", - "id": 884, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6240:3:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_103_by_1", - "typeString": "int_const 103" - }, - "value": "103" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_103_by_1", - "typeString": "int_const 103" - } - ], - "expression": { - "argumentTypes": null, - "id": 882, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "6227:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 883, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "6227:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 885, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6227:17:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6204:40:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 894, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 887, - "name": "wrapped_asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 869, - "src": "6262:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 889, - "name": "asset_id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 859, - "src": "6297:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 890, - "name": "token_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 821, - "src": "6307:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 891, - "name": "token_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "6320:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 892, - "name": "asset_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 881, - "src": "6335:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 888, - "name": "deployWrappedAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 970, - "src": "6278:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_uint8_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,uint8) returns (address)" - } - }, - "id": 893, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6278:72:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "6262:88:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 895, - "nodeType": "ExpressionStatement", - "src": "6262:88:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 902, - "name": "target_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 812, - "src": "6412:14:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 903, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 828, - "src": "6428:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 899, - "name": "wrapped_asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 869, - "src": "6392:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 898, - "name": "WrappedAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "6379:12:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", - "typeString": "type(contract WrappedAsset)" - } - }, - "id": 900, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6379:27:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_WrappedAsset_$1811", - "typeString": "contract WrappedAsset" - } - }, - "id": 901, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mint", - "nodeType": "MemberAccess", - "referencedDeclaration": 1349, - "src": "6379:32:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256) external" - } - }, - "id": 904, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6379:56:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 905, - "nodeType": "ExpressionStatement", - "src": "6379:56:1" - } - ] - } - } - ] - }, - "documentation": null, - "id": 927, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "vaaTransfer", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 795, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 794, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 927, - "src": "5177:17:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 793, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5177:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5176:19:1" - }, - "returnParameters": { - "id": 796, - "nodeType": "ParameterList", - "parameters": [], - "src": "5204:0:1" - }, - "scope": 1254, - "src": "5156:1447:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 969, - "nodeType": "Block", - "src": "6740:808:1", - "statements": [ - { - "assignments": [941], - "declarations": [ - { - "constant": false, - "id": 941, - "mutability": "mutable", - "name": "targetBytes", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 969, - "src": "6918:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - }, - "typeName": { - "id": 940, - "name": "bytes20", - "nodeType": "ElementaryTypeName", - "src": "6918:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 946, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 944, - "name": "wrappedAssetMaster", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 359, - "src": "6948:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 943, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6940:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes20_$", - "typeString": "type(bytes20)" - }, - "typeName": { - "id": 942, - "name": "bytes20", - "nodeType": "ElementaryTypeName", - "src": "6940:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6940:27:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6918:49:1" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "6986:348:1", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "7000:24:1", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7019:4:1", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "7013:5:1" - }, - "nodeType": "YulFunctionCall", - "src": "7013:11:1" - }, - "variables": [ - { - "name": "clone", - "nodeType": "YulTypedName", - "src": "7004:5:1", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "clone", - "nodeType": "YulIdentifier", - "src": "7044:5:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7051:66:1", - "type": "", - "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7037:6:1" - }, - "nodeType": "YulFunctionCall", - "src": "7037:81:1" - }, - "nodeType": "YulExpressionStatement", - "src": "7037:81:1" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "clone", - "nodeType": "YulIdentifier", - "src": "7142:5:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7149:4:1", - "type": "", - "value": "0x14" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7138:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "7138:16:1" - }, - { - "name": "targetBytes", - "nodeType": "YulIdentifier", - "src": "7156:11:1" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7131:6:1" - }, - "nodeType": "YulFunctionCall", - "src": "7131:37:1" - }, - "nodeType": "YulExpressionStatement", - "src": "7131:37:1" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "clone", - "nodeType": "YulIdentifier", - "src": "7192:5:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7199:4:1", - "type": "", - "value": "0x28" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7188:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "7188:16:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7206:66:1", - "type": "", - "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7181:6:1" - }, - "nodeType": "YulFunctionCall", - "src": "7181:92:1" - }, - "nodeType": "YulExpressionStatement", - "src": "7181:92:1" - }, - { - "nodeType": "YulAssignment", - "src": "7286:38:1", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7303:1:1", - "type": "", - "value": "0" - }, - { - "name": "clone", - "nodeType": "YulIdentifier", - "src": "7306:5:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7313:4:1", - "type": "", - "value": "0x37" - }, - { - "name": "seed", - "nodeType": "YulIdentifier", - "src": "7319:4:1" - } - ], - "functionName": { - "name": "create2", - "nodeType": "YulIdentifier", - "src": "7295:7:1" - }, - "nodeType": "YulFunctionCall", - "src": "7295:29:1" - }, - "variableNames": [ - { - "name": "asset", - "nodeType": "YulIdentifier", - "src": "7286:5:1" - } - ] - } - ] - }, - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 938, - "isOffset": false, - "isSlot": false, - "src": "7286:5:1", - "valueSize": 1 - }, - { - "declaration": 929, - "isOffset": false, - "isSlot": false, - "src": "7319:4:1", - "valueSize": 1 - }, - { - "declaration": 941, - "isOffset": false, - "isSlot": false, - "src": "7156:11:1", - "valueSize": 1 - } - ], - "id": 947, - "nodeType": "InlineAssembly", - "src": "6977:357:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 952, - "name": "token_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 931, - "src": "7403:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 953, - "name": "token_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "7416:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 954, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 935, - "src": "7431:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 949, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 938, - "src": "7385:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 948, - "name": "WrappedAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "7372:12:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", - "typeString": "type(contract WrappedAsset)" - } - }, - "id": 950, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7372:19:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_WrappedAsset_$1811", - "typeString": "contract WrappedAsset" - } - }, - "id": 951, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "initialize", - "nodeType": "MemberAccess", - "referencedDeclaration": 1328, - "src": "7372:30:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint8_$_t_bytes32_$_t_uint8_$returns$__$", - "typeString": "function (uint8,bytes32,uint8) external" - } - }, - "id": 955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7372:68:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 956, - "nodeType": "ExpressionStatement", - "src": "7372:68:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 961, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 957, - "name": "wrappedAssets", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "7476:13:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 959, - "indexExpression": { - "argumentTypes": null, - "id": 958, - "name": "seed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "7490:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7476:19:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 960, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 938, - "src": "7498:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "7476:27:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 962, - "nodeType": "ExpressionStatement", - "src": "7476:27:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 967, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 963, - "name": "isWrappedAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "7513:14:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 965, - "indexExpression": { - "argumentTypes": null, - "id": 964, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 938, - "src": "7528:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7513:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 966, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7537:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "7513:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 968, - "nodeType": "ExpressionStatement", - "src": "7513:28:1" - } - ] - }, - "documentation": null, - "id": 970, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "deployWrappedAsset", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 936, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 929, - "mutability": "mutable", - "name": "seed", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 970, - "src": "6637:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 928, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6637:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 931, - "mutability": "mutable", - "name": "token_chain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 970, - "src": "6651:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 930, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6651:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 933, - "mutability": "mutable", - "name": "token_address", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 970, - "src": "6670:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 932, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6670:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 935, - "mutability": "mutable", - "name": "decimals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 970, - "src": "6693:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 934, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6693:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6636:72:1" - }, - "returnParameters": { - "id": 939, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 938, - "mutability": "mutable", - "name": "asset", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 970, - "src": "6726:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 937, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6726:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6725:15:1" - }, - "scope": 1254, - "src": "6609:939:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 1182, - "nodeType": "Block", - "src": "7750:1642:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 990, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 988, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "7768:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 989, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7778:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "7768:11:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "616d6f756e74206d757374206e6f742062652030", - "id": 991, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7781:22:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", - "typeString": "literal_string \"amount must not be 0\"" - }, - "value": "amount must not be 0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", - "typeString": "literal_string \"amount must not be 0\"" - } - ], - "id": 987, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "7760:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 992, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7760:44:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 993, - "nodeType": "ExpressionStatement", - "src": "7760:44:1" - }, - { - "assignments": [995], - "declarations": [ - { - "constant": false, - "id": 995, - "mutability": "mutable", - "name": "asset_chain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1182, - "src": "7815:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 994, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "7815:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 997, - "initialValue": { - "argumentTypes": null, - "id": 996, - "name": "CHAIN_ID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "7835:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7815:28:1" - }, - { - "assignments": [999], - "declarations": [ - { - "constant": false, - "id": 999, - "mutability": "mutable", - "name": "asset_address", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1182, - "src": "7853:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 998, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7853:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1000, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7853:21:1" - }, - { - "assignments": [1002], - "declarations": [ - { - "constant": false, - "id": 1002, - "mutability": "mutable", - "name": "decimals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1182, - "src": "7884:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1001, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "7884:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1008, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1004, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "7907:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1003, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2537, - "src": "7901:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$", - "typeString": "type(contract ERC20)" - } - }, - "id": 1005, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7901:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$2537", - "typeString": "contract ERC20" - } - }, - "id": 1006, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "decimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 2113, - "src": "7901:21:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", - "typeString": "function () view external returns (uint8)" - } - }, - "id": 1007, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7901:23:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7884:40:1" - }, - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1009, - "name": "isWrappedAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "7939:14:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1011, - "indexExpression": { - "argumentTypes": null, - "id": 1010, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "7954:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7939:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 1162, - "nodeType": "Block", - "src": "8161:1086:1", - "statements": [ - { - "assignments": [1039], - "declarations": [ - { - "constant": false, - "id": 1039, - "mutability": "mutable", - "name": "balanceBefore", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1162, - "src": "8175:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1038, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8175:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1049, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1046, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "8231:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Wormhole_$1254", - "typeString": "contract Wormhole" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Wormhole_$1254", - "typeString": "contract Wormhole" - } - ], - "id": 1045, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8223:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1044, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8223:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1047, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8223:13:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1041, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "8206:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1040, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2615, - "src": "8199:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 1042, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8199:13:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2615", - "typeString": "contract IERC20" - } - }, - "id": 1043, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 2554, - "src": "8199:23:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" - } - }, - "id": 1048, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8199:38:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8175:62:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1054, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "8282:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1055, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8282:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1058, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "8302:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Wormhole_$1254", - "typeString": "contract Wormhole" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Wormhole_$1254", - "typeString": "contract Wormhole" - } - ], - "id": 1057, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8294:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1056, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8294:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1059, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8294:13:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 1060, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "8309:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1051, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "8258:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1050, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2615, - "src": "8251:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 1052, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8251:13:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2615", - "typeString": "contract IERC20" - } - }, - "id": 1053, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 2674, - "src": "8251:30:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2615_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2615_$", - "typeString": "function (contract IERC20,address,address,uint256)" - } - }, - "id": 1061, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8251:65:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1062, - "nodeType": "ExpressionStatement", - "src": "8251:65:1" - }, - { - "assignments": [1064], - "declarations": [ - { - "constant": false, - "id": 1064, - "mutability": "mutable", - "name": "balanceAfter", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1162, - "src": "8330:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1063, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8330:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1074, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1071, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "8385:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Wormhole_$1254", - "typeString": "contract Wormhole" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Wormhole_$1254", - "typeString": "contract Wormhole" - } - ], - "id": 1070, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8377:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1069, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8377:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1072, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8377:13:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1066, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "8360:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1065, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2615, - "src": "8353:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 1067, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8353:13:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2615", - "typeString": "contract IERC20" - } - }, - "id": 1068, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 2554, - "src": "8353:23:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" - } - }, - "id": 1073, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8353:38:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8330:61:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 1080, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1075, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "8596:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1078, - "name": "balanceBefore", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "8622:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1076, - "name": "balanceAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1064, - "src": "8605:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1077, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 1880, - "src": "8605:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 1079, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8605:31:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8596:40:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1081, - "nodeType": "ExpressionStatement", - "src": "8596:40:1" + "src": "7590:48:1" }, { "condition": { @@ -10621,19 +9277,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1084, + "id": 1023, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1082, + "id": 1021, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1002, - "src": "8711:8:1", + "referencedDeclaration": 1014, + "src": "7727:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10644,14 +9300,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "39", - "id": 1083, + "id": 1022, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8722:1:1", + "src": "7738:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", @@ -10659,86 +9315,37 @@ }, "value": "9" }, - "src": "8711:12:1", + "src": "7727:12:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1130, + "id": 1039, "nodeType": "IfStatement", - "src": "8707:339:1", + "src": "7723:99:1", "trueBody": { - "id": 1129, + "id": 1038, "nodeType": "Block", - "src": "8725:321:1", + "src": "7741:81:1", "statements": [ - { - "assignments": [1086], - "declarations": [ - { - "constant": false, - "id": 1086, - "mutability": "mutable", - "name": "original_amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1129, - "src": "8743:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1085, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8743:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1088, - "initialValue": { - "argumentTypes": null, - "id": 1087, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "8769:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8743:32:1" - }, { "expression": { "argumentTypes": null, - "id": 1101, + "id": 1036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1089, + "id": 1024, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "8793:6:1", + "referencedDeclaration": 925, + "src": "7759:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10755,7 +9362,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1099, + "id": 1034, "isConstant": false, "isLValue": false, "isPure": false, @@ -10763,14 +9370,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 1092, + "id": 1027, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8813:2:1", + "src": "7779:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -10789,19 +9396,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1097, + "id": 1032, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1095, + "id": 1030, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1002, - "src": "8827:8:1", + "referencedDeclaration": 1014, + "src": "7793:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10812,14 +9419,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "39", - "id": 1096, + "id": 1031, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8838:1:1", + "src": "7804:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", @@ -10827,7 +9434,7 @@ }, "value": "9" }, - "src": "8827:12:1", + "src": "7793:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -10841,29 +9448,29 @@ "typeString": "uint8" } ], - "id": 1094, + "id": 1029, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8819:7:1", + "src": "7785:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 1093, + "id": 1028, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "8819:7:1", + "src": "7785:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1098, + "id": 1033, "isConstant": false, "isLValue": false, "isPure": false, @@ -10871,14 +9478,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8819:21:1", + "src": "7785:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8813:27:1", + "src": "7779:27:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10894,32 +9501,32 @@ ], "expression": { "argumentTypes": null, - "id": 1090, + "id": 1025, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "8802:6:1", + "referencedDeclaration": 925, + "src": "7768:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1091, + "id": 1026, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "div", + "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 1960, - "src": "8802:10:1", + "referencedDeclaration": 2388, + "src": "7768:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1100, + "id": 1035, "isConstant": false, "isLValue": false, "isPure": false, @@ -10927,45 +9534,3229 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8802:39:1", + "src": "7768:39:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8793:48:1", + "src": "7759:48:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1102, + "id": 1037, "nodeType": "ExpressionStatement", - "src": "8793:48:1" + "src": "7759:48:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1044, + "name": "target_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 909, + "src": "7870:14:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1045, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 925, + "src": "7886:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1041, + "name": "token_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1005, + "src": "7842:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1040, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "7835:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$3086_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7835:21:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 1043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 3120, + "src": "7835:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3086_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$3086_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 1046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7835:58:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1047, + "nodeType": "ExpressionStatement", + "src": "7835:58:1" + } + ] + }, + "id": 1049, + "nodeType": "IfStatement", + "src": "6889:1015:1", + "trueBody": { + "id": 1003, + "nodeType": "Block", + "src": "6918:590:1", + "statements": [ + { + "assignments": [949], + "declarations": [ + { + "constant": false, + "id": 949, + "mutability": "mutable", + "name": "token_address", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1003, + "src": "6932:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 948, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6932:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 954, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "3731", + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6971:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_71_by_1", + "typeString": "int_const 71" + }, + "value": "71" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_71_by_1", + "typeString": "int_const 71" + } + ], + "expression": { + "argumentTypes": null, + "id": 950, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "6956:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toBytes32", + "nodeType": "MemberAccess", + "referencedDeclaration": 298, + "src": "6956:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (bytes32)" + } + }, + "id": 953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6956:18:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6932:42:1" + }, + { + "assignments": [956], + "declarations": [ + { + "constant": false, + "id": 956, + "mutability": "mutable", + "name": "asset_id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1003, + "src": "6988:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 955, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6988:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 964, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 960, + "name": "token_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "7034:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 961, + "name": "token_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "7047:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 958, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "7017:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 959, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7017:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7017:44:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 957, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7007:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7007:55:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6988:74:1" + }, + { + "assignments": [966], + "declarations": [ + { + "constant": false, + "id": 966, + "mutability": "mutable", + "name": "wrapped_asset", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1003, + "src": "7154:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 965, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7154:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 970, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 967, + "name": "wrappedAssets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "7178:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 969, + "indexExpression": { + "argumentTypes": null, + "id": 968, + "name": "asset_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "7192:8:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7178:23:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7154:47:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 971, + "name": "wrapped_asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 966, + "src": "7219:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7244:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 973, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7236:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 972, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7236:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7236:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "7219:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 994, + "nodeType": "IfStatement", + "src": "7215:212:1", + "trueBody": { + "id": 993, + "nodeType": "Block", + "src": "7248:179:1", + "statements": [ + { + "assignments": [978], + "declarations": [ + { + "constant": false, + "id": 978, + "mutability": "mutable", + "name": "asset_decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 993, + "src": "7266:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 977, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7266:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 983, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "313033", + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7302:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_103_by_1", + "typeString": "int_const 103" + }, + "value": "103" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_103_by_1", + "typeString": "int_const 103" + } + ], + "expression": { + "argumentTypes": null, + "id": 979, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "7289:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "7289:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (uint8)" + } + }, + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7289:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7266:40:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 984, + "name": "wrapped_asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 966, + "src": "7324:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 986, + "name": "asset_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "7359:8:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 987, + "name": "token_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "7369:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 988, + "name": "token_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "7382:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 989, + "name": "asset_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "7397:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 985, + "name": "deployWrappedAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1094, + "src": "7340:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_uint8_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,uint8) returns (address)" + } + }, + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7340:72:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7324:88:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 992, + "nodeType": "ExpressionStatement", + "src": "7324:88:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 999, + "name": "target_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 909, + "src": "7474:14:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1000, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 925, + "src": "7490:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 996, + "name": "wrapped_asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 966, + "src": "7454:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 995, + "name": "WrappedAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2147, + "src": "7441:12:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$2147_$", + "typeString": "type(contract WrappedAsset)" + } + }, + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7441:27:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_WrappedAsset_$2147", + "typeString": "contract WrappedAsset" + } + }, + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 1511, + "src": "7441:32:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7441:56:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1002, + "nodeType": "ExpressionStatement", + "src": "7441:56:1" + } + ] + } + } + ] + }, + "documentation": null, + "id": 1051, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "vaaTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 892, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 891, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1051, + "src": "6239:17:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 890, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6239:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6238:19:1" + }, + "returnParameters": { + "id": 893, + "nodeType": "ParameterList", + "parameters": [], + "src": "6266:0:1" + }, + "scope": 1420, + "src": "6218:1692:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1093, + "nodeType": "Block", + "src": "8047:808:1", + "statements": [ + { + "assignments": [1065], + "declarations": [ + { + "constant": false, + "id": 1065, + "mutability": "mutable", + "name": "targetBytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1093, + "src": "8225:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + }, + "typeName": { + "id": 1064, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "8225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1070, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1068, + "name": "wrappedAssetMaster", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 359, + "src": "8255:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1067, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8247:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes20_$", + "typeString": "type(bytes20)" + }, + "typeName": { + "id": 1066, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "8247:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8247:27:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8225:49:1" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "8293:348:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8307:24:1", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8326:4:1", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8320:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "8320:11:1" + }, + "variables": [ + { + "name": "clone", + "nodeType": "YulTypedName", + "src": "8311:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "clone", + "nodeType": "YulIdentifier", + "src": "8351:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8358:66:1", + "type": "", + "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8344:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "8344:81:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8344:81:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "clone", + "nodeType": "YulIdentifier", + "src": "8449:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8456:4:1", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8445:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8445:16:1" + }, + { + "name": "targetBytes", + "nodeType": "YulIdentifier", + "src": "8463:11:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8438:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "8438:37:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8438:37:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "clone", + "nodeType": "YulIdentifier", + "src": "8499:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8506:4:1", + "type": "", + "value": "0x28" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8495:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8495:16:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8513:66:1", + "type": "", + "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8488:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "8488:92:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8488:92:1" + }, + { + "nodeType": "YulAssignment", + "src": "8593:38:1", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8610:1:1", + "type": "", + "value": "0" + }, + { + "name": "clone", + "nodeType": "YulIdentifier", + "src": "8613:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8620:4:1", + "type": "", + "value": "0x37" + }, + { + "name": "seed", + "nodeType": "YulIdentifier", + "src": "8626:4:1" + } + ], + "functionName": { + "name": "create2", + "nodeType": "YulIdentifier", + "src": "8602:7:1" + }, + "nodeType": "YulFunctionCall", + "src": "8602:29:1" + }, + "variableNames": [ + { + "name": "asset", + "nodeType": "YulIdentifier", + "src": "8593:5:1" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 1062, + "isOffset": false, + "isSlot": false, + "src": "8593:5:1", + "valueSize": 1 + }, + { + "declaration": 1053, + "isOffset": false, + "isSlot": false, + "src": "8626:4:1", + "valueSize": 1 + }, + { + "declaration": 1065, + "isOffset": false, + "isSlot": false, + "src": "8463:11:1", + "valueSize": 1 + } + ], + "id": 1071, + "nodeType": "InlineAssembly", + "src": "8284:357:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1076, + "name": "token_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "8710:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1077, + "name": "token_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1057, + "src": "8723:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1078, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1059, + "src": "8738:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1073, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1062, + "src": "8692:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1072, + "name": "WrappedAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2147, + "src": "8679:12:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$2147_$", + "typeString": "type(contract WrappedAsset)" + } + }, + "id": 1074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8679:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_WrappedAsset_$2147", + "typeString": "contract WrappedAsset" + } + }, + "id": 1075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "initialize", + "nodeType": "MemberAccess", + "referencedDeclaration": 1490, + "src": "8679:30:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint8_$_t_bytes32_$_t_uint8_$returns$__$", + "typeString": "function (uint8,bytes32,uint8) external" + } + }, + "id": 1079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8679:68:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1080, + "nodeType": "ExpressionStatement", + "src": "8679:68:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1081, + "name": "wrappedAssets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "8783:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 1083, + "indexExpression": { + "argumentTypes": null, + "id": 1082, + "name": "seed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1053, + "src": "8797:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8783:19:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1084, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1062, + "src": "8805:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8783:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1086, + "nodeType": "ExpressionStatement", + "src": "8783:27:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1087, + "name": "isWrappedAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "8820:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1089, + "indexExpression": { + "argumentTypes": null, + "id": 1088, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1062, + "src": "8835:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8820:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8844:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "8820:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1092, + "nodeType": "ExpressionStatement", + "src": "8820:28:1" + } + ] + }, + "documentation": null, + "id": 1094, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployWrappedAsset", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1060, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1053, + "mutability": "mutable", + "name": "seed", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1094, + "src": "7944:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1052, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7944:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1055, + "mutability": "mutable", + "name": "token_chain", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1094, + "src": "7958:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1054, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7958:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1057, + "mutability": "mutable", + "name": "token_address", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1094, + "src": "7977:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1056, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7977:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1059, + "mutability": "mutable", + "name": "decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1094, + "src": "8000:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1058, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "8000:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7943:72:1" + }, + "returnParameters": { + "id": 1063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1062, + "mutability": "mutable", + "name": "asset", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1094, + "src": "8033:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1061, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8033:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8032:15:1" + }, + "scope": 1420, + "src": "7916:939:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1313, + "nodeType": "Block", + "src": "9057:1779:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1112, + "name": "target_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1102, + "src": "9075:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1113, + "name": "CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "9091:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "9075:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d757374206e6f74207472616e7366657220746f207468652073616d6520636861696e", + "id": 1115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9101:37:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_84da05290fceea4e386923ffe3e265c937087704025788355b73caadd151270b", + "typeString": "literal_string \"must not transfer to the same chain\"" + }, + "value": "must not transfer to the same chain" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_84da05290fceea4e386923ffe3e265c937087704025788355b73caadd151270b", + "typeString": "literal_string \"must not transfer to the same chain\"" + } + ], + "id": 1111, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "9067:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9067:72:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1117, + "nodeType": "ExpressionStatement", + "src": "9067:72:1" + }, + { + "assignments": [1119], + "declarations": [ + { + "constant": false, + "id": 1119, + "mutability": "mutable", + "name": "asset_chain", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1313, + "src": "9150:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1118, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9150:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1121, + "initialValue": { + "argumentTypes": null, + "id": 1120, + "name": "CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "9170:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9150:28:1" + }, + { + "assignments": [1123], + "declarations": [ + { + "constant": false, + "id": 1123, + "mutability": "mutable", + "name": "asset_address", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1313, + "src": "9188:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1122, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9188:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1124, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9188:21:1" + }, + { + "assignments": [1126], + "declarations": [ + { + "constant": false, + "id": 1126, + "mutability": "mutable", + "name": "decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1313, + "src": "9219:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1125, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9219:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1132, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1128, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "9242:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1127, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3008, + "src": "9236:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$3008_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 1129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9236:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$3008", + "typeString": "contract ERC20" + } + }, + "id": 1130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "decimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 2584, + "src": "9236:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 1131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9236:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9219:40:1" + }, + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1133, + "name": "isWrappedAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "9274:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1135, + "indexExpression": { + "argumentTypes": null, + "id": 1134, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "9289:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9274:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1286, + "nodeType": "Block", + "src": "9496:1091:1", + "statements": [ + { + "assignments": [1163], + "declarations": [ + { + "constant": false, + "id": 1163, + "mutability": "mutable", + "name": "balanceBefore", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1286, + "src": "9510:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9510:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1173, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1170, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "9566:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + ], + "id": 1169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9558:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1168, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9558:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9558:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1165, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "9541:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1164, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "9534:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$3086_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9534:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 1167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 3025, + "src": "9534:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9534:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9510:62:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1178, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9617:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9617:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1182, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "9637:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + ], + "id": 1181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9629:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9629:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9629:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1184, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "9644:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1175, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "9593:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1174, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "9586:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$3086_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9586:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 1177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 3145, + "src": "9586:30:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3086_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$3086_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9586:65:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1186, + "nodeType": "ExpressionStatement", + "src": "9586:65:1" + }, + { + "assignments": [1188], + "declarations": [ + { + "constant": false, + "id": 1188, + "mutability": "mutable", + "name": "balanceAfter", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1286, + "src": "9665:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1187, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9665:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1198, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1195, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "9720:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + ], + "id": 1194, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9712:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1193, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9712:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9712:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1190, + "name": "asset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "9695:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1189, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "9688:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$3086_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9688:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" + } + }, + "id": 1192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 3025, + "src": "9688:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9688:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9665:61:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1199, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "9931:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1202, + "name": "balanceBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1163, + "src": "9957:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1200, + "name": "balanceAfter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1188, + "src": "9940:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2354, + "src": "9940:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9940:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9931:40:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1205, + "nodeType": "ExpressionStatement", + "src": "9931:40:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1206, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "10046:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "39", + "id": 1207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10057:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "10046:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1254, + "nodeType": "IfStatement", + "src": "10042:344:1", + "trueBody": { + "id": 1253, + "nodeType": "Block", + "src": "10060:326:1", + "statements": [ + { + "assignments": [1210], + "declarations": [ + { + "constant": false, + "id": 1210, + "mutability": "mutable", + "name": "original_amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1253, + "src": "10078:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10078:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1212, + "initialValue": { + "argumentTypes": null, + "id": 1211, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "10104:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10078:32:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1213, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "10128:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1216, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10148:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1219, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "10162:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "39", + "id": 1220, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10173:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "10162:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10154:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1217, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10154:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10154:21:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10148:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1214, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "10137:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 2410, + "src": "10137:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10137:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10128:48:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1226, + "nodeType": "ExpressionStatement", + "src": "10128:48:1" }, { "condition": { "argumentTypes": null, - "id": 1103, + "id": 1227, "name": "refund_dust", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 982, - "src": "8864:11:1", + "referencedDeclaration": 1106, + "src": "10199:11:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1124, + "id": 1248, "nodeType": "IfStatement", - "src": "8860:141:1", + "src": "10195:146:1", "trueBody": { - "id": 1123, + "id": 1247, "nodeType": "Block", - "src": "8877:124:1", + "src": "10212:129:1", "statements": [ { "expression": { @@ -10975,18 +12766,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1108, + "id": 1232, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "8921:3:1", + "src": "10261:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1109, + "id": 1233, "isConstant": false, "isLValue": false, "isPure": false, @@ -10994,7 +12785,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "8921:10:1", + "src": "10261:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -11009,7 +12800,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1119, + "id": 1243, "isConstant": false, "isLValue": false, "isPure": false, @@ -11017,14 +12808,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 1112, + "id": 1236, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8953:2:1", + "src": "10293:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -11043,19 +12834,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1117, + "id": 1241, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1115, + "id": 1239, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1002, - "src": "8967:8:1", + "referencedDeclaration": 1126, + "src": "10307:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -11066,14 +12857,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "39", - "id": 1116, + "id": 1240, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8978:1:1", + "src": "10318:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", @@ -11081,7 +12872,7 @@ }, "value": "9" }, - "src": "8967:12:1", + "src": "10307:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -11095,29 +12886,29 @@ "typeString": "uint8" } ], - "id": 1114, + "id": 1238, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8959:7:1", + "src": "10299:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 1113, + "id": 1237, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "8959:7:1", + "src": "10299:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1118, + "id": 1242, "isConstant": false, "isLValue": false, "isPure": false, @@ -11125,14 +12916,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8959:21:1", + "src": "10299:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8953:27:1", + "src": "10293:27:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11148,32 +12939,32 @@ ], "expression": { "argumentTypes": null, - "id": 1110, + "id": 1234, "name": "original_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "8933:15:1", + "referencedDeclaration": 1210, + "src": "10273:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1111, + "id": 1235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mod", "nodeType": "MemberAccess", - "referencedDeclaration": 2005, - "src": "8933:19:1", + "referencedDeclaration": 2432, + "src": "10273:19:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1120, + "id": 1244, "isConstant": false, "isLValue": false, "isPure": false, @@ -11181,7 +12972,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8933:48:1", + "src": "10273:48:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11205,12 +12996,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1105, + "id": 1229, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "8905:5:1", + "referencedDeclaration": 1096, + "src": "10241:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11224,18 +13015,18 @@ "typeString": "address" } ], - "id": 1104, - "name": "ERC20", + "id": 1228, + "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2537, - "src": "8899:5:1", + "referencedDeclaration": 3086, + "src": "10234:6:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$", - "typeString": "type(contract ERC20)" + "typeIdentifier": "t_type$_t_contract$_IERC20_$3086_$", + "typeString": "type(contract IERC20)" } }, - "id": 1106, + "id": 1230, "isConstant": false, "isLValue": false, "isPure": false, @@ -11243,28 +13034,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8899:12:1", + "src": "10234:13:1", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$2537", - "typeString": "contract ERC20" + "typeIdentifier": "t_contract$_IERC20_$3086", + "typeString": "contract IERC20" } }, - "id": 1107, + "id": 1231, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "transfer", + "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 2158, - "src": "8899:21:1", + "referencedDeclaration": 3120, + "src": "10234:26:1", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3086_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$3086_$", + "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 1121, + "id": 1245, "isConstant": false, "isLValue": false, "isPure": false, @@ -11272,16 +13063,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8899:83:1", + "src": "10234:88:1", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 1122, + "id": 1246, "nodeType": "ExpressionStatement", - "src": "8899:83:1" + "src": "10234:88:1" } ] } @@ -11289,19 +13080,19 @@ { "expression": { "argumentTypes": null, - "id": 1127, + "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1125, + "id": 1249, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1002, - "src": "9019:8:1", + "referencedDeclaration": 1126, + "src": "10359:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -11312,14 +13103,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "39", - "id": 1126, + "id": 1250, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9030:1:1", + "src": "10370:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", @@ -11327,15 +13118,15 @@ }, "value": "9" }, - "src": "9019:12:1", + "src": "10359:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1128, + "id": 1252, "nodeType": "ExpressionStatement", - "src": "9019:12:1" + "src": "10359:12:1" } ] } @@ -11350,7 +13141,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1148, + "id": 1272, "isConstant": false, "isLValue": false, "isPure": false, @@ -11364,7 +13155,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1145, + "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, @@ -11372,14 +13163,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 1134, + "id": 1258, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9085:2:1", + "src": "10425:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -11398,7 +13189,7 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1143, + "id": 1267, "isConstant": false, "isLValue": false, "isPure": false, @@ -11413,12 +13204,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1138, + "id": 1262, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "9105:5:1", + "referencedDeclaration": 1096, + "src": "10445:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11432,18 +13223,18 @@ "typeString": "address" } ], - "id": 1137, + "id": 1261, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2537, - "src": "9099:5:1", + "referencedDeclaration": 3008, + "src": "10439:5:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$", + "typeIdentifier": "t_type$_t_contract$_ERC20_$3008_$", "typeString": "type(contract ERC20)" } }, - "id": 1139, + "id": 1263, "isConstant": false, "isLValue": false, "isPure": false, @@ -11451,28 +13242,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9099:12:1", + "src": "10439:12:1", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$2537", + "typeIdentifier": "t_contract$_ERC20_$3008", "typeString": "contract ERC20" } }, - "id": 1140, + "id": 1264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "decimals", "nodeType": "MemberAccess", - "referencedDeclaration": 2113, - "src": "9099:21:1", + "referencedDeclaration": 2584, + "src": "10439:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 1141, + "id": 1265, "isConstant": false, "isLValue": false, "isPure": false, @@ -11480,7 +13271,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9099:23:1", + "src": "10439:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -11492,14 +13283,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "39", - "id": 1142, + "id": 1266, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9125:1:1", + "src": "10465:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", @@ -11507,7 +13298,7 @@ }, "value": "9" }, - "src": "9099:27:1", + "src": "10439:27:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -11521,29 +13312,29 @@ "typeString": "uint8" } ], - "id": 1136, + "id": 1260, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9091:7:1", + "src": "10431:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 1135, + "id": 1259, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "9091:7:1", + "src": "10431:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1144, + "id": 1268, "isConstant": false, "isLValue": false, "isPure": false, @@ -11551,14 +13342,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9091:36:1", + "src": "10431:36:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "9085:42:1", + "src": "10425:42:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11574,32 +13365,32 @@ ], "expression": { "argumentTypes": null, - "id": 1132, + "id": 1256, "name": "balanceAfter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1064, - "src": "9068:12:1", + "referencedDeclaration": 1188, + "src": "10408:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1133, + "id": 1257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", - "referencedDeclaration": 1960, - "src": "9068:16:1", + "referencedDeclaration": 2410, + "src": "10408:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1146, + "id": 1270, "isConstant": false, "isLValue": false, "isPure": false, @@ -11607,7 +13398,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9068:60:1", + "src": "10408:60:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11618,18 +13409,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1147, + "id": 1271, "name": "MAX_UINT64", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 357, - "src": "9132:10:1", + "src": "10472:10:1", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, - "src": "9068:74:1", + "src": "10408:74:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11638,14 +13429,14 @@ { "argumentTypes": null, "hexValue": "6272696467652062616c616e636520776f756c6420657863656564206d6178696d756d", - "id": 1149, + "id": 1273, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9144:37:1", + "src": "10484:37:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4", @@ -11665,18 +13456,18 @@ "typeString": "literal_string \"bridge balance would exceed maximum\"" } ], - "id": 1131, + "id": 1255, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "9060:7:1", + "src": "10400:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1150, + "id": 1274, "isConstant": false, "isLValue": false, "isPure": false, @@ -11684,33 +13475,33 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9060:122:1", + "src": "10400:122:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1151, + "id": 1275, "nodeType": "ExpressionStatement", - "src": "9060:122:1" + "src": "10400:122:1" }, { "expression": { "argumentTypes": null, - "id": 1160, + "id": 1284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1152, + "id": 1276, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "9197:13:1", + "referencedDeclaration": 1123, + "src": "10537:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -11726,12 +13517,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1157, + "id": 1281, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "9229:5:1", + "referencedDeclaration": 1096, + "src": "10569:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11745,29 +13536,29 @@ "typeString": "address" } ], - "id": 1156, + "id": 1280, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9221:7:1", + "src": "10561:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 1155, + "id": 1279, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "9221:7:1", + "src": "10561:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1158, + "id": 1282, "isConstant": false, "isLValue": false, "isPure": false, @@ -11775,7 +13566,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9221:14:1", + "src": "10561:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11790,29 +13581,29 @@ "typeString": "uint256" } ], - "id": 1154, + "id": 1278, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9213:7:1", + "src": "10553:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { - "id": 1153, + "id": 1277, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "9213:7:1", + "src": "10553:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1159, + "id": 1283, "isConstant": false, "isLValue": false, "isPure": false, @@ -11820,32 +13611,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9213:23:1", + "src": "10553:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "9197:39:1", + "src": "10537:39:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 1161, + "id": 1285, "nodeType": "ExpressionStatement", - "src": "9197:39:1" + "src": "10537:39:1" } ] }, - "id": 1163, + "id": 1287, "nodeType": "IfStatement", - "src": "7935:1312:1", + "src": "9270:1317:1", "trueBody": { - "id": 1037, + "id": 1161, "nodeType": "Block", - "src": "7962:193:1", + "src": "9297:193:1", "statements": [ { "expression": { @@ -11855,18 +13646,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1016, + "id": 1140, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "8001:3:1", + "src": "9336:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1017, + "id": 1141, "isConstant": false, "isLValue": false, "isPure": false, @@ -11874,7 +13665,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "8001:10:1", + "src": "9336:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -11882,12 +13673,12 @@ }, { "argumentTypes": null, - "id": 1018, + "id": 1142, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "8013:6:1", + "referencedDeclaration": 1098, + "src": "9348:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11910,12 +13701,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1013, + "id": 1137, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "7989:5:1", + "referencedDeclaration": 1096, + "src": "9324:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11929,18 +13720,18 @@ "typeString": "address" } ], - "id": 1012, + "id": 1136, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "7976:12:1", + "referencedDeclaration": 2147, + "src": "9311:12:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", + "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$2147_$", "typeString": "type(contract WrappedAsset)" } }, - "id": 1014, + "id": 1138, "isConstant": false, "isLValue": false, "isPure": false, @@ -11948,28 +13739,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7976:19:1", + "src": "9311:19:1", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_WrappedAsset_$1811", + "typeIdentifier": "t_contract$_WrappedAsset_$2147", "typeString": "contract WrappedAsset" } }, - "id": 1015, + "id": 1139, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "burn", "nodeType": "MemberAccess", - "referencedDeclaration": 1370, - "src": "7976:24:1", + "referencedDeclaration": 1532, + "src": "9311:24:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, - "id": 1019, + "id": 1143, "isConstant": false, "isLValue": false, "isPure": false, @@ -11977,33 +13768,33 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7976:44:1", + "src": "9311:44:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1020, + "id": 1144, "nodeType": "ExpressionStatement", - "src": "7976:44:1" + "src": "9311:44:1" }, { "expression": { "argumentTypes": null, - "id": 1027, + "id": 1151, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1021, + "id": 1145, "name": "asset_chain", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 995, - "src": "8034:11:1", + "referencedDeclaration": 1119, + "src": "9369:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -12021,12 +13812,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1023, + "id": 1147, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "8061:5:1", + "referencedDeclaration": 1096, + "src": "9396:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12040,18 +13831,18 @@ "typeString": "address" } ], - "id": 1022, + "id": 1146, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "8048:12:1", + "referencedDeclaration": 2147, + "src": "9383:12:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", + "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$2147_$", "typeString": "type(contract WrappedAsset)" } }, - "id": 1024, + "id": 1148, "isConstant": false, "isLValue": false, "isPure": false, @@ -12059,28 +13850,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8048:19:1", + "src": "9383:19:1", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_WrappedAsset_$1811", + "typeIdentifier": "t_contract$_WrappedAsset_$2147", "typeString": "contract WrappedAsset" } }, - "id": 1025, + "id": 1149, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "assetChain", "nodeType": "MemberAccess", - "referencedDeclaration": 1277, - "src": "8048:30:1", + "referencedDeclaration": 1443, + "src": "9383:30:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 1026, + "id": 1150, "isConstant": false, "isLValue": false, "isPure": false, @@ -12088,39 +13879,39 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8048:32:1", + "src": "9383:32:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "8034:46:1", + "src": "9369:46:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1028, + "id": 1152, "nodeType": "ExpressionStatement", - "src": "8034:46:1" + "src": "9369:46:1" }, { "expression": { "argumentTypes": null, - "id": 1035, + "id": 1159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1029, + "id": 1153, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "8094:13:1", + "referencedDeclaration": 1123, + "src": "9429:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -12138,12 +13929,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1031, + "id": 1155, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "8123:5:1", + "referencedDeclaration": 1096, + "src": "9458:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12157,18 +13948,18 @@ "typeString": "address" } ], - "id": 1030, + "id": 1154, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "8110:12:1", + "referencedDeclaration": 2147, + "src": "9445:12:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", + "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$2147_$", "typeString": "type(contract WrappedAsset)" } }, - "id": 1032, + "id": 1156, "isConstant": false, "isLValue": false, "isPure": false, @@ -12176,28 +13967,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8110:19:1", + "src": "9445:19:1", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_WrappedAsset_$1811", + "typeIdentifier": "t_contract$_WrappedAsset_$2147", "typeString": "contract WrappedAsset" } }, - "id": 1033, + "id": 1157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "assetAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 1279, - "src": "8110:32:1", + "referencedDeclaration": 1445, + "src": "9445:32:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", "typeString": "function () view external returns (bytes32)" } }, - "id": 1034, + "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, @@ -12205,38 +13996,152 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8110:34:1", + "src": "9445:34:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "8094:50:1", + "src": "9429:50:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 1036, + "id": 1160, "nodeType": "ExpressionStatement", - "src": "8094:50:1" + "src": "9429:50:1" } ] } }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1289, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "10644:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10654:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10644:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472756e636174656420616d6f756e74206d757374206e6f742062652030", + "id": 1292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10657:32:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91dc3b6ab9754748867317f89b73413ba314ee8a1acb42b6836d39d61d9e310e", + "typeString": "literal_string \"truncated amount must not be 0\"" + }, + "value": "truncated amount must not be 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91dc3b6ab9754748867317f89b73413ba314ee8a1acb42b6836d39d61d9e310e", + "typeString": "literal_string \"truncated amount must not be 0\"" + } + ], + "id": 1288, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "10636:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10636:54:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1294, + "nodeType": "ExpressionStatement", + "src": "10636:54:1" + }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1165, + "id": 1296, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "9278:12:1", + "referencedDeclaration": 1102, + "src": "10722:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -12244,12 +14149,12 @@ }, { "argumentTypes": null, - "id": 1166, + "id": 1297, "name": "asset_chain", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 995, - "src": "9292:11:1", + "referencedDeclaration": 1119, + "src": "10736:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -12257,12 +14162,12 @@ }, { "argumentTypes": null, - "id": 1167, + "id": 1298, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1002, - "src": "9305:8:1", + "referencedDeclaration": 1126, + "src": "10749:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -12270,12 +14175,12 @@ }, { "argumentTypes": null, - "id": 1168, + "id": 1299, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "9315:13:1", + "referencedDeclaration": 1123, + "src": "10759:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -12291,18 +14196,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1173, + "id": 1304, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "9346:3:1", + "src": "10790:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1174, + "id": 1305, "isConstant": false, "isLValue": false, "isPure": false, @@ -12310,7 +14215,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "9346:10:1", + "src": "10790:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -12324,29 +14229,29 @@ "typeString": "address payable" } ], - "id": 1172, + "id": 1303, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9338:7:1", + "src": "10782:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 1171, + "id": 1302, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "9338:7:1", + "src": "10782:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1175, + "id": 1306, "isConstant": false, "isLValue": false, "isPure": false, @@ -12354,7 +14259,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9338:19:1", + "src": "10782:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12369,29 +14274,29 @@ "typeString": "uint256" } ], - "id": 1170, + "id": 1301, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9330:7:1", + "src": "10774:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { - "id": 1169, + "id": 1300, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "9330:7:1", + "src": "10774:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1176, + "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, @@ -12399,7 +14304,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9330:28:1", + "src": "10774:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -12408,12 +14313,12 @@ }, { "argumentTypes": null, - "id": 1177, + "id": 1308, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 976, - "src": "9360:9:1", + "referencedDeclaration": 1100, + "src": "10804:9:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -12421,12 +14326,12 @@ }, { "argumentTypes": null, - "id": 1178, + "id": 1309, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "9371:6:1", + "referencedDeclaration": 1098, + "src": "10815:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12434,12 +14339,12 @@ }, { "argumentTypes": null, - "id": 1179, + "id": 1310, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 980, - "src": "9379:5:1", + "referencedDeclaration": 1104, + "src": "10823:5:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -12481,18 +14386,18 @@ "typeString": "uint32" } ], - "id": 1164, + "id": 1295, "name": "LogTokensLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, - "src": "9262:15:1", + "src": "10706:15:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", "typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" } }, - "id": 1180, + "id": 1311, "isConstant": false, "isLValue": false, "isPure": false, @@ -12500,61 +14405,61 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9262:123:1", + "src": "10706:123:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1181, + "id": 1312, "nodeType": "EmitStatement", - "src": "9257:128:1" + "src": "10701:128:1" } ] }, "documentation": null, "functionSelector": "70713960", - "id": 1183, + "id": 1314, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 985, + "id": 1109, "modifierName": { "argumentTypes": null, - "id": 984, + "id": 1108, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3071, - "src": "7737:12:1", + "referencedDeclaration": 3657, + "src": "9044:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "7737:12:1" + "src": "9044:12:1" } ], "name": "lockAssets", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 983, + "id": 1107, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 972, + "id": 1096, "mutability": "mutable", "name": "asset", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1183, - "src": "7583:13:1", + "scope": 1314, + "src": "8890:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12562,10 +14467,10 @@ "typeString": "address" }, "typeName": { - "id": 971, + "id": 1095, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7583:7:1", + "src": "8890:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12577,13 +14482,13 @@ }, { "constant": false, - "id": 974, + "id": 1098, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1183, - "src": "7606:14:1", + "scope": 1314, + "src": "8913:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12591,10 +14496,10 @@ "typeString": "uint256" }, "typeName": { - "id": 973, + "id": 1097, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7606:7:1", + "src": "8913:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12605,13 +14510,13 @@ }, { "constant": false, - "id": 976, + "id": 1100, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1183, - "src": "7630:17:1", + "scope": 1314, + "src": "8937:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12619,10 +14524,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 975, + "id": 1099, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "7630:7:1", + "src": "8937:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -12633,13 +14538,13 @@ }, { "constant": false, - "id": 978, + "id": 1102, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1183, - "src": "7657:18:1", + "scope": 1314, + "src": "8964:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12647,10 +14552,10 @@ "typeString": "uint8" }, "typeName": { - "id": 977, + "id": 1101, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "7657:5:1", + "src": "8964:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -12661,13 +14566,13 @@ }, { "constant": false, - "id": 980, + "id": 1104, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1183, - "src": "7685:12:1", + "scope": 1314, + "src": "8992:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12675,10 +14580,10 @@ "typeString": "uint32" }, "typeName": { - "id": 979, + "id": 1103, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "7685:6:1", + "src": "8992:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -12689,13 +14594,13 @@ }, { "constant": false, - "id": 982, + "id": 1106, "mutability": "mutable", "name": "refund_dust", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1183, - "src": "7707:16:1", + "scope": 1314, + "src": "9014:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12703,10 +14608,10 @@ "typeString": "bool" }, "typeName": { - "id": 981, + "id": 1105, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "7707:4:1", + "src": "9014:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12716,26 +14621,455 @@ "visibility": "internal" } ], - "src": "7573:156:1" + "src": "8880:156:1" }, "returnParameters": { - "id": 986, + "id": 1110, "nodeType": "ParameterList", "parameters": [], - "src": "7750:0:1" + "src": "9057:0:1" }, - "scope": 1254, - "src": "7554:1838:1", + "scope": 1420, + "src": "8861:1975:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { - "id": 1236, + "id": 1402, "nodeType": "Block", - "src": "9526:334:1", + "src": "10970:636:1", "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1326, + "name": "target_chain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1318, + "src": "10988:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1327, + "name": "CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "11004:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "10988:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d757374206e6f74207472616e7366657220746f207468652073616d6520636861696e", + "id": 1329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11014:37:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_84da05290fceea4e386923ffe3e265c937087704025788355b73caadd151270b", + "typeString": "literal_string \"must not transfer to the same chain\"" + }, + "value": "must not transfer to the same chain" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_84da05290fceea4e386923ffe3e265c937087704025788355b73caadd151270b", + "typeString": "literal_string \"must not transfer to the same chain\"" + } + ], + "id": 1325, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "src": "10980:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10980:72:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1331, + "nodeType": "ExpressionStatement", + "src": "10980:72:1" + }, + { + "assignments": [1333], + "declarations": [ + { + "constant": false, + "id": 1333, + "mutability": "mutable", + "name": "remainder", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1402, + "src": "11063:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1332, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11063:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1341, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + }, + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11097:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "39", + "id": 1338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11103:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "11097:7:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1334, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11083:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11083:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mod", + "nodeType": "MemberAccess", + "referencedDeclaration": 2432, + "src": "11083:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11083:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11063:42:1" + }, + { + "assignments": [1343], + "declarations": [ + { + "constant": false, + "id": 1343, + "mutability": "mutable", + "name": "transfer_amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1402, + "src": "11115:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1342, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11115:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1351, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + }, + "id": 1349, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11155:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "39", + "id": 1348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11161:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "11155:7:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1344, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11141:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11141:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 2410, + "src": "11141:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11141:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11115:48:1" + }, { "expression": { "argumentTypes": null, @@ -12746,35 +15080,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1198, + "id": 1355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1195, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "9544:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1196, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9544:9:1", + "id": 1353, + "name": "transfer_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "11181:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12785,14 +15103,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1197, + "id": 1354, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9557:1:1", + "src": "11200:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -12800,7 +15118,7 @@ }, "value": "0" }, - "src": "9544:14:1", + "src": "11181:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12808,21 +15126,21 @@ }, { "argumentTypes": null, - "hexValue": "616d6f756e74206d757374206e6f742062652030", - "id": 1199, + "hexValue": "7472756e636174656420616d6f756e74206d757374206e6f742062652030", + "id": 1356, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9560:22:1", + "src": "11203:32:1", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", - "typeString": "literal_string \"amount must not be 0\"" + "typeIdentifier": "t_stringliteral_91dc3b6ab9754748867317f89b73413ba314ee8a1acb42b6836d39d61d9e310e", + "typeString": "literal_string \"truncated amount must not be 0\"" }, - "value": "amount must not be 0" + "value": "truncated amount must not be 0" } ], "expression": { @@ -12832,22 +15150,22 @@ "typeString": "bool" }, { - "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", - "typeString": "literal_string \"amount must not be 0\"" + "typeIdentifier": "t_stringliteral_91dc3b6ab9754748867317f89b73413ba314ee8a1acb42b6836d39d61d9e310e", + "typeString": "literal_string \"truncated amount must not be 0\"" } ], - "id": 1194, + "id": 1352, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "9536:7:1", + "src": "11173:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1200, + "id": 1357, "isConstant": false, "isLValue": false, "isPure": false, @@ -12855,16 +15173,103 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9536:47:1", + "src": "11173:63:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1201, + "id": 1358, "nodeType": "ExpressionStatement", - "src": "9536:47:1" + "src": "11173:63:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1364, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1333, + "src": "11302:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1359, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11282:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11282:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 1363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11282:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11282:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1366, + "nodeType": "ExpressionStatement", + "src": "11282:30:1" }, { "expression": { @@ -12879,12 +15284,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1203, + "id": 1368, "name": "WETHAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 365, - "src": "9632:11:1", + "src": "11361:11:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12898,18 +15303,18 @@ "typeString": "address" } ], - "id": 1202, + "id": 1367, "name": "WETH", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1265, - "src": "9627:4:1", + "referencedDeclaration": 1431, + "src": "11356:4:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_WETH_$1265_$", + "typeIdentifier": "t_type$_t_contract$_WETH_$1431_$", "typeString": "type(contract WETH)" } }, - "id": 1204, + "id": 1369, "isConstant": false, "isLValue": false, "isPure": true, @@ -12917,28 +15322,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9627:17:1", + "src": "11356:17:1", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_WETH_$1265", + "typeIdentifier": "t_contract$_WETH_$1431", "typeString": "contract WETH" } }, - "id": 1205, + "id": 1370, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", - "referencedDeclaration": 1259, - "src": "9627:25:1", + "referencedDeclaration": 1425, + "src": "11356:25:1", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, - "id": 1208, + "id": 1375, "isConstant": false, "isLValue": false, "isPure": false, @@ -12948,41 +15353,73 @@ "options": [ { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1206, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "9661:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1207, + "id": 1374, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9661:9:1", + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1371, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11390:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11390:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 1373, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1333, + "src": "11402:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11390:21:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "src": "9627:44:1", + "src": "11356:56:1", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, - "id": 1209, + "id": 1376, "isConstant": false, "isLValue": false, "isPure": false, @@ -12990,16 +15427,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9627:46:1", + "src": "11356:58:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1210, + "id": 1377, "nodeType": "ExpressionStatement", - "src": "9627:46:1" + "src": "11356:58:1" }, { "eventCall": { @@ -13007,12 +15444,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1212, + "id": 1379, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1187, - "src": "9736:12:1", + "referencedDeclaration": 1318, + "src": "11477:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -13020,12 +15457,12 @@ }, { "argumentTypes": null, - "id": 1213, + "id": 1380, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, - "src": "9750:8:1", + "src": "11491:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -13033,21 +15470,21 @@ }, { "argumentTypes": null, - "hexValue": "3138", - "id": 1214, + "hexValue": "39", + "id": 1381, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9760:2:1", + "src": "11501:1:1", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" }, - "value": "18" + "value": "9" }, { "argumentTypes": null, @@ -13057,12 +15494,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1219, + "id": 1386, "name": "WETHAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 365, - "src": "9780:11:1", + "src": "11520:11:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13076,29 +15513,29 @@ "typeString": "address" } ], - "id": 1218, + "id": 1385, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9772:7:1", + "src": "11512:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 1217, + "id": 1384, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "9772:7:1", + "src": "11512:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1220, + "id": 1387, "isConstant": false, "isLValue": false, "isPure": true, @@ -13106,7 +15543,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9772:20:1", + "src": "11512:20:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13121,29 +15558,29 @@ "typeString": "uint256" } ], - "id": 1216, + "id": 1383, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9764:7:1", + "src": "11504:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { - "id": 1215, + "id": 1382, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "9764:7:1", + "src": "11504:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1221, + "id": 1388, "isConstant": false, "isLValue": false, "isPure": true, @@ -13151,7 +15588,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9764:29:1", + "src": "11504:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -13168,18 +15605,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1226, + "id": 1393, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "9811:3:1", + "src": "11551:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1227, + "id": 1394, "isConstant": false, "isLValue": false, "isPure": false, @@ -13187,7 +15624,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "9811:10:1", + "src": "11551:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -13201,29 +15638,29 @@ "typeString": "address payable" } ], - "id": 1225, + "id": 1392, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9803:7:1", + "src": "11543:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 1224, + "id": 1391, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "9803:7:1", + "src": "11543:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1228, + "id": 1395, "isConstant": false, "isLValue": false, "isPure": false, @@ -13231,7 +15668,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9803:19:1", + "src": "11543:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13246,29 +15683,29 @@ "typeString": "uint256" } ], - "id": 1223, + "id": 1390, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9795:7:1", + "src": "11535:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { - "id": 1222, + "id": 1389, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "9795:7:1", + "src": "11535:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1229, + "id": 1396, "isConstant": false, "isLValue": false, "isPure": false, @@ -13276,7 +15713,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9795:28:1", + "src": "11535:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -13285,12 +15722,12 @@ }, { "argumentTypes": null, - "id": 1230, + "id": 1397, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1185, - "src": "9825:9:1", + "referencedDeclaration": 1316, + "src": "11565:9:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -13298,28 +15735,12 @@ }, { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1231, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "9836:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1232, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9836:9:1", + "id": 1398, + "name": "transfer_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "11576:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13327,12 +15748,12 @@ }, { "argumentTypes": null, - "id": 1233, + "id": 1399, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1189, - "src": "9847:5:1", + "referencedDeclaration": 1320, + "src": "11593:5:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -13350,8 +15771,8 @@ "typeString": "uint8" }, { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" }, { "typeIdentifier": "t_bytes32", @@ -13374,18 +15795,18 @@ "typeString": "uint32" } ], - "id": 1211, + "id": 1378, "name": "LogTokensLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, - "src": "9720:15:1", + "src": "11461:15:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", "typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" } }, - "id": 1234, + "id": 1400, "isConstant": false, "isLValue": false, "isPure": false, @@ -13393,61 +15814,61 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9720:133:1", + "src": "11461:138:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1235, + "id": 1401, "nodeType": "EmitStatement", - "src": "9715:138:1" + "src": "11456:143:1" } ] }, "documentation": null, "functionSelector": "58d62e46", - "id": 1237, + "id": 1403, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 1192, + "id": 1323, "modifierName": { "argumentTypes": null, - "id": 1191, + "id": 1322, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3071, - "src": "9513:12:1", + "referencedDeclaration": 3657, + "src": "10957:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "9513:12:1" + "src": "10957:12:1" } ], "name": "lockETH", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1190, + "id": 1321, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1185, + "id": 1316, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1237, - "src": "9424:17:1", + "scope": 1403, + "src": "10868:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13455,10 +15876,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1184, + "id": 1315, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "9424:7:1", + "src": "10868:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -13469,13 +15890,13 @@ }, { "constant": false, - "id": 1187, + "id": 1318, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1237, - "src": "9451:18:1", + "scope": 1403, + "src": "10895:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13483,10 +15904,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1186, + "id": 1317, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "9451:5:1", + "src": "10895:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -13497,13 +15918,13 @@ }, { "constant": false, - "id": 1189, + "id": 1320, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1237, - "src": "9479:12:1", + "scope": 1403, + "src": "10923:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13511,10 +15932,10 @@ "typeString": "uint32" }, "typeName": { - "id": 1188, + "id": 1319, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "9479:6:1", + "src": "10923:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -13524,25 +15945,25 @@ "visibility": "internal" } ], - "src": "9414:83:1" + "src": "10858:83:1" }, "returnParameters": { - "id": 1193, + "id": 1324, "nodeType": "ParameterList", "parameters": [], - "src": "9526:0:1" + "src": "10970:0:1" }, - "scope": 1254, - "src": "9398:462:1", + "scope": 1420, + "src": "10842:764:1", "stateMutability": "payable", "virtual": false, "visibility": "public" }, { "body": { - "id": 1244, + "id": 1410, "nodeType": "Block", - "src": "9894:57:1", + "src": "11640:57:1", "statements": [ { "expression": { @@ -13551,14 +15972,14 @@ { "argumentTypes": null, "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", - "id": 1241, + "id": 1407, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9902:46:1", + "src": "11648:46:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", @@ -13574,18 +15995,18 @@ "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" } ], - "id": 1240, + "id": 1406, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, - "src": "9895:6:1", + "src": "11641:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 1242, + "id": 1408, "isConstant": false, "isLValue": false, "isPure": false, @@ -13593,21 +16014,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9895:54:1", + "src": "11641:54:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1243, + "id": 1409, "nodeType": "ExpressionStatement", - "src": "9895:54:1" + "src": "11641:54:1" } ] }, "documentation": null, - "id": 1245, + "id": 1411, "implemented": true, "kind": "fallback", "modifiers": [], @@ -13615,28 +16036,28 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1238, + "id": 1404, "nodeType": "ParameterList", "parameters": [], - "src": "9874:2:1" + "src": "11620:2:1" }, "returnParameters": { - "id": 1239, + "id": 1405, "nodeType": "ParameterList", "parameters": [], - "src": "9894:0:1" + "src": "11640:0:1" }, - "scope": 1254, - "src": "9866:85:1", + "scope": 1420, + "src": "11612:85:1", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { - "id": 1252, + "id": 1418, "nodeType": "Block", - "src": "9984:57:1", + "src": "11730:57:1", "statements": [ { "expression": { @@ -13645,14 +16066,14 @@ { "argumentTypes": null, "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", - "id": 1249, + "id": 1415, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9992:46:1", + "src": "11738:46:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", @@ -13668,18 +16089,18 @@ "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" } ], - "id": 1248, + "id": 1414, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, - "src": "9985:6:1", + "src": "11731:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 1250, + "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, @@ -13687,21 +16108,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9985:54:1", + "src": "11731:54:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1251, + "id": 1417, "nodeType": "ExpressionStatement", - "src": "9985:54:1" + "src": "11731:54:1" } ] }, "documentation": null, - "id": 1253, + "id": 1419, "implemented": true, "kind": "receive", "modifiers": [], @@ -13709,26 +16130,26 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1246, + "id": 1412, "nodeType": "ParameterList", "parameters": [], - "src": "9964:2:1" + "src": "11710:2:1" }, "returnParameters": { - "id": 1247, + "id": 1413, "nodeType": "ParameterList", "parameters": [], - "src": "9984:0:1" + "src": "11730:0:1" }, - "scope": 1254, - "src": "9957:84:1", + "scope": 1420, + "src": "11703:84:1", "stateMutability": "payable", "virtual": false, "visibility": "external" } ], - "scope": 1266, - "src": "502:9541:1" + "scope": 1432, + "src": "463:11326:1" }, { "abstract": false, @@ -13737,27 +16158,27 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1255, + "id": 1421, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2615, - "src": "10064:6:1", + "referencedDeclaration": 3086, + "src": "11810:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2615", + "typeIdentifier": "t_contract$_IERC20_$3086", "typeString": "contract IERC20" } }, - "id": 1256, + "id": 1422, "nodeType": "InheritanceSpecifier", - "src": "10064:6:1" + "src": "11810:6:1" } ], - "contractDependencies": [2615], + "contractDependencies": [3086], "contractKind": "interface", "documentation": null, "fullyImplemented": false, - "id": 1265, - "linearizedBaseContracts": [1265, 2615], + "id": 1431, + "linearizedBaseContracts": [1431, 3086], "name": "WETH", "nodeType": "ContractDefinition", "nodes": [ @@ -13765,7 +16186,7 @@ "body": null, "documentation": null, "functionSelector": "d0e30db0", - "id": 1259, + "id": 1425, "implemented": false, "kind": "function", "modifiers": [], @@ -13773,19 +16194,19 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1257, + "id": 1423, "nodeType": "ParameterList", "parameters": [], - "src": "10093:2:1" + "src": "11839:2:1" }, "returnParameters": { - "id": 1258, + "id": 1424, "nodeType": "ParameterList", "parameters": [], - "src": "10112:0:1" + "src": "11858:0:1" }, - "scope": 1265, - "src": "10077:36:1", + "scope": 1431, + "src": "11823:36:1", "stateMutability": "payable", "virtual": false, "visibility": "external" @@ -13794,7 +16215,7 @@ "body": null, "documentation": null, "functionSelector": "2e1a7d4d", - "id": 1264, + "id": 1430, "implemented": false, "kind": "function", "modifiers": [], @@ -13802,18 +16223,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1262, + "id": 1428, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1261, + "id": 1427, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1264, - "src": "10137:14:1", + "scope": 1430, + "src": "11883:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13821,10 +16242,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1260, + "id": 1426, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "10137:7:1", + "src": "11883:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13834,13544 +16255,16001 @@ "visibility": "internal" } ], - "src": "10136:16:1" + "src": "11882:16:1" }, "returnParameters": { - "id": 1263, + "id": 1429, "nodeType": "ParameterList", "parameters": [], - "src": "10161:0:1" + "src": "11907:0:1" }, - "scope": 1265, - "src": "10119:43:1", + "scope": 1431, + "src": "11865:43:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], - "scope": 1266, - "src": "10046:118:1" + "scope": 1432, + "src": "11792:118:1" } ], - "src": "103:10062:1" + "src": "64:11847:1" }, "legacyAST": { - "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol", - "exportedSymbols": { - "WETH": [1265], - "Wormhole": [1254] + "attributes": { + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/Wormhole.sol", + "exportedSymbols": { + "WETH": [1431], + "Wormhole": [1420] + }, + "license": "Apache 2" }, - "id": 1266, - "license": "Apache 2", - "nodeType": "SourceUnit", - "nodes": [ + "children": [ { + "attributes": { + "literals": ["solidity", "^", "0.6", ".0"] + }, "id": 335, - "literals": ["solidity", "^", "0.6", ".0"], - "nodeType": "PragmaDirective", - "src": "103:23:1" + "name": "PragmaDirective", + "src": "64:23:1" }, { + "attributes": { + "literals": ["experimental", "ABIEncoderV2"] + }, "id": 336, - "literals": ["experimental", "ABIEncoderV2"], - "nodeType": "PragmaDirective", - "src": "127:33:1" + "name": "PragmaDirective", + "src": "88:33:1" }, { - "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", - "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "attributes": { + "SourceUnit": 3009, + "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, "id": 337, - "nodeType": "ImportDirective", - "scope": 1266, - "sourceUnit": 2538, - "src": "162:55:1", - "symbolAliases": [], - "unitAlias": "" + "name": "ImportDirective", + "src": "123:55:1" }, { - "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "attributes": { + "SourceUnit": 3087, + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, "id": 338, - "nodeType": "ImportDirective", - "scope": 1266, - "sourceUnit": 2616, - "src": "218:56:1", - "symbolAliases": [], - "unitAlias": "" + "name": "ImportDirective", + "src": "179:56:1" }, { - "absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", - "file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", + "attributes": { + "SourceUnit": 3300, + "absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, "id": 339, - "nodeType": "ImportDirective", - "scope": 1266, - "sourceUnit": 2829, - "src": "275:59:1", - "symbolAliases": [], - "unitAlias": "" + "name": "ImportDirective", + "src": "236:59:1" }, { - "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", - "file": "@openzeppelin/contracts/math/SafeMath.sol", + "attributes": { + "SourceUnit": 2506, + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "file": "@openzeppelin/contracts/math/SafeMath.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, "id": 340, - "nodeType": "ImportDirective", - "scope": 1266, - "sourceUnit": 2031, - "src": "335:51:1", - "symbolAliases": [], - "unitAlias": "" + "name": "ImportDirective", + "src": "296:51:1" }, { - "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", - "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "attributes": { + "SourceUnit": 3659, + "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, "id": 341, - "nodeType": "ImportDirective", - "scope": 1266, - "sourceUnit": 3073, - "src": "387:59:1", - "symbolAliases": [], - "unitAlias": "" + "name": "ImportDirective", + "src": "348:59:1" }, { - "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/BytesLib.sol", - "file": "./BytesLib.sol", + "attributes": { + "SourceUnit": 334, + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/BytesLib.sol", + "file": "./BytesLib.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, "id": 342, - "nodeType": "ImportDirective", - "scope": 1266, - "sourceUnit": 334, - "src": "447:24:1", - "symbolAliases": [], - "unitAlias": "" + "name": "ImportDirective", + "src": "408:24:1" }, { - "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol", - "file": "./WrappedAsset.sol", + "attributes": { + "SourceUnit": 2148, + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol", + "file": "./WrappedAsset.sol", + "scope": 1432, + "symbolAliases": [null], + "unitAlias": "" + }, "id": 343, - "nodeType": "ImportDirective", - "scope": 1266, - "sourceUnit": 1812, - "src": "472:28:1", - "symbolAliases": [], - "unitAlias": "" + "name": "ImportDirective", + "src": "433:28:1" }, { - "abstract": false, - "baseContracts": [ + "attributes": { + "abstract": false, + "contractDependencies": [3658], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "linearizedBaseContracts": [1420, 3658], + "name": "Wormhole", + "scope": 1432 + }, + "children": [ { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 344, - "name": "ReentrancyGuard", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3072, - "src": "523:15:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ReentrancyGuard_$3072", - "typeString": "contract ReentrancyGuard" - } + "attributes": { + "arguments": null }, - "id": 345, - "nodeType": "InheritanceSpecifier", - "src": "523:15:1" - } - ], - "contractDependencies": [3072], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 1254, - "linearizedBaseContracts": [1254, 3072], - "name": "Wormhole", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 348, - "libraryName": { - "contractScope": null, - "id": 346, - "name": "SafeERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2828, - "src": "551:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$2828", - "typeString": "library SafeERC20" - } - }, - "nodeType": "UsingForDirective", - "src": "545:27:1", - "typeName": { - "contractScope": null, - "id": 347, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2615, - "src": "565:6:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2615", - "typeString": "contract IERC20" - } - } - }, - { - "id": 351, - "libraryName": { - "contractScope": null, - "id": 349, - "name": "BytesLib", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 333, - "src": "583:8:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_BytesLib_$333", - "typeString": "library BytesLib" - } - }, - "nodeType": "UsingForDirective", - "src": "577:25:1", - "typeName": { - "id": 350, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "596:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - } - }, - { - "id": 354, - "libraryName": { - "contractScope": null, - "id": 352, - "name": "SafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2030, - "src": "613:8:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$2030", - "typeString": "library SafeMath" - } - }, - "nodeType": "UsingForDirective", - "src": "607:27:1", - "typeName": { - "id": 353, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "626:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "constant": true, - "id": 357, - "mutability": "constant", - "name": "MAX_UINT64", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1254, - "src": "640:55:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 355, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "640:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "31385f3434365f3734345f3037335f3730395f3535315f363135", - "id": 356, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "669:26:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_18446744073709551615_by_1", - "typeString": "int_const 18446744073709551615" - }, - "value": "18_446_744_073_709_551_615" - }, - "visibility": "internal" - }, - { - "constant": false, - "functionSelector": "99da1d3c", - "id": 359, - "mutability": "mutable", - "name": "wrappedAssetMaster", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1254, - "src": "747:33:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 358, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "747:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 362, - "mutability": "mutable", - "name": "CHAIN_ID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1254, - "src": "815:18:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 360, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "815:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "32", - "id": 361, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "832:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "visibility": "internal" - }, - { - "constant": true, - "id": 365, - "mutability": "constant", - "name": "WETHAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1254, - "src": "885:73:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 363, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "885:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "307843303261614133396232323346453844304130653543344632376541443930383343373536436332", - "id": 364, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "916:42:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "value": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" - }, - "visibility": "internal" - }, - { - "canonicalName": "Wormhole.GuardianSet", - "id": 371, - "members": [ + "children": [ { - "constant": false, - "id": 368, - "mutability": "mutable", - "name": "keys", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 371, - "src": "994:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" + "attributes": { + "contractScope": null, + "name": "ReentrancyGuard", + "referencedDeclaration": 3658, + "type": "contract ReentrancyGuard" }, - "typeName": { - "baseType": { - "id": 366, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "994:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 367, - "length": null, - "nodeType": "ArrayTypeName", - "src": "994:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 370, - "mutability": "mutable", - "name": "expiration_time", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 371, - "src": "1018:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 369, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1018:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" + "id": 344, + "name": "UserDefinedTypeName", + "src": "484:15:1" } ], - "name": "GuardianSet", - "nodeType": "StructDefinition", - "scope": 1254, - "src": "965:82:1", - "visibility": "public" + "id": 345, + "name": "InheritanceSpecifier", + "src": "484:15:1" }, { - "anonymous": false, - "documentation": null, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeERC20", + "referencedDeclaration": 3299, + "type": "library SafeERC20" + }, + "id": 346, + "name": "UserDefinedTypeName", + "src": "512:9:1" + }, + { + "attributes": { + "contractScope": null, + "name": "IERC20", + "referencedDeclaration": 3086, + "type": "contract IERC20" + }, + "id": 347, + "name": "UserDefinedTypeName", + "src": "526:6:1" + } + ], + "id": 348, + "name": "UsingForDirective", + "src": "506:27:1" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "BytesLib", + "referencedDeclaration": 333, + "type": "library BytesLib" + }, + "id": 349, + "name": "UserDefinedTypeName", + "src": "544:8:1" + }, + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 350, + "name": "ElementaryTypeName", + "src": "557:5:1" + } + ], + "id": 351, + "name": "UsingForDirective", + "src": "538:25:1" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeMath", + "referencedDeclaration": 2505, + "type": "library SafeMath" + }, + "id": 352, + "name": "UserDefinedTypeName", + "src": "574:8:1" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 353, + "name": "ElementaryTypeName", + "src": "587:7:1" + } + ], + "id": 354, + "name": "UsingForDirective", + "src": "568:27:1" + }, + { + "attributes": { + "constant": true, + "mutability": "constant", + "name": "MAX_UINT64", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "uint64", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 355, + "name": "ElementaryTypeName", + "src": "601:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31385f3434365f3734345f3037335f3730395f3535315f363135", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 18446744073709551615", + "value": "18_446_744_073_709_551_615" + }, + "id": 356, + "name": "Literal", + "src": "630:26:1" + } + ], + "id": 357, + "name": "VariableDeclaration", + "src": "601:55:1" + }, + { + "attributes": { + "constant": false, + "functionSelector": "99da1d3c", + "mutability": "mutable", + "name": "wrappedAssetMaster", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 358, + "name": "ElementaryTypeName", + "src": "708:7:1" + } + ], + "id": 359, + "name": "VariableDeclaration", + "src": "708:33:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "CHAIN_ID", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "uint8", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 360, + "name": "ElementaryTypeName", + "src": "776:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "32", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 2", + "value": "2" + }, + "id": 361, + "name": "Literal", + "src": "793:1:1" + } + ], + "id": 362, + "name": "VariableDeclaration", + "src": "776:18:1" + }, + { + "attributes": { + "constant": true, + "mutability": "constant", + "name": "WETHAddress", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 363, + "name": "ElementaryTypeName", + "src": "846:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "307843303261614133396232323346453844304130653543344632376541443930383343373536436332", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "address payable", + "value": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + "id": 364, + "name": "Literal", + "src": "877:42:1" + } + ], + "id": 365, + "name": "VariableDeclaration", + "src": "846:73:1" + }, + { + "attributes": { + "canonicalName": "Wormhole.GuardianSet", + "name": "GuardianSet", + "scope": 1420, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "keys", + "overrides": null, + "scope": 371, + "stateVariable": false, + "storageLocation": "default", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 366, + "name": "ElementaryTypeName", + "src": "955:7:1" + } + ], + "id": 367, + "name": "ArrayTypeName", + "src": "955:9:1" + } + ], + "id": 368, + "name": "VariableDeclaration", + "src": "955:14:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "expiration_time", + "overrides": null, + "scope": 371, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 369, + "name": "ElementaryTypeName", + "src": "979:6:1" + } + ], + "id": 370, + "name": "VariableDeclaration", + "src": "979:22:1" + } + ], + "id": 371, + "name": "StructDefinition", + "src": "926:82:1" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "LogGuardianSetChanged" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "oldGuardianIndex", + "overrides": null, + "scope": 377, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 372, + "name": "ElementaryTypeName", + "src": "1051:6:1" + } + ], + "id": 373, + "name": "VariableDeclaration", + "src": "1051:23:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "newGuardianIndex", + "overrides": null, + "scope": 377, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 374, + "name": "ElementaryTypeName", + "src": "1084:6:1" + } + ], + "id": 375, + "name": "VariableDeclaration", + "src": "1084:23:1" + } + ], + "id": 376, + "name": "ParameterList", + "src": "1041:72:1" + } + ], "id": 377, - "name": "LogGuardianSetChanged", - "nodeType": "EventDefinition", - "parameters": { - "id": 376, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 373, - "indexed": false, - "mutability": "mutable", - "name": "oldGuardianIndex", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 377, - "src": "1090:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 372, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1090:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 375, - "indexed": false, - "mutability": "mutable", - "name": "newGuardianIndex", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 377, - "src": "1123:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 374, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1123:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1080:72:1" - }, - "src": "1053:100:1" + "name": "EventDefinition", + "src": "1014:100:1" }, { - "anonymous": false, - "documentation": null, + "attributes": { + "anonymous": false, + "documentation": null, + "name": "LogTokensLocked" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "target_chain", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 378, + "name": "ElementaryTypeName", + "src": "1151:5:1" + } + ], + "id": 379, + "name": "VariableDeclaration", + "src": "1151:18:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "token_chain", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 380, + "name": "ElementaryTypeName", + "src": "1179:5:1" + } + ], + "id": 381, + "name": "VariableDeclaration", + "src": "1179:17:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "token_decimals", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 382, + "name": "ElementaryTypeName", + "src": "1206:5:1" + } + ], + "id": 383, + "name": "VariableDeclaration", + "src": "1206:20:1" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "mutability": "mutable", + "name": "token", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 384, + "name": "ElementaryTypeName", + "src": "1236:7:1" + } + ], + "id": 385, + "name": "VariableDeclaration", + "src": "1236:21:1" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 386, + "name": "ElementaryTypeName", + "src": "1267:7:1" + } + ], + "id": 387, + "name": "VariableDeclaration", + "src": "1267:22:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 388, + "name": "ElementaryTypeName", + "src": "1299:7:1" + } + ], + "id": 389, + "name": "VariableDeclaration", + "src": "1299:17:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 390, + "name": "ElementaryTypeName", + "src": "1326:7:1" + } + ], + "id": 391, + "name": "VariableDeclaration", + "src": "1326:14:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "mutability": "mutable", + "name": "nonce", + "overrides": null, + "scope": 395, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 392, + "name": "ElementaryTypeName", + "src": "1350:6:1" + } + ], + "id": 393, + "name": "VariableDeclaration", + "src": "1350:12:1" + } + ], + "id": 394, + "name": "ParameterList", + "src": "1141:227:1" + } + ], "id": 395, - "name": "LogTokensLocked", - "nodeType": "EventDefinition", - "parameters": { - "id": 394, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 379, - "indexed": false, - "mutability": "mutable", - "name": "target_chain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 395, - "src": "1190:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 378, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1190:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 381, - "indexed": false, - "mutability": "mutable", - "name": "token_chain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 395, - "src": "1218:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 380, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1218:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 383, - "indexed": false, - "mutability": "mutable", - "name": "token_decimals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 395, - "src": "1245:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 382, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1245:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 385, - "indexed": true, - "mutability": "mutable", - "name": "token", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 395, - "src": "1275:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 384, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1275:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 387, - "indexed": true, - "mutability": "mutable", - "name": "sender", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 395, - "src": "1306:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 386, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1306:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 389, - "indexed": false, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 395, - "src": "1338:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 388, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1338:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 391, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 395, - "src": "1365:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 390, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1365:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 393, - "indexed": false, - "mutability": "mutable", - "name": "nonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 395, - "src": "1389:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 392, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1389:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1180:227:1" - }, - "src": "1159:249:1" + "name": "EventDefinition", + "src": "1120:249:1" }, { - "constant": false, - "functionSelector": "42b0aefa", - "id": 399, - "mutability": "mutable", - "name": "guardian_sets", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1254, - "src": "1467:51:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", - "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" + "attributes": { + "canonicalName": "Wormhole.ParsedVAA", + "name": "ParsedVAA", + "scope": 1420, + "visibility": "public" }, - "typeName": { - "id": 398, - "keyType": { - "id": 396, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1475:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Mapping", - "src": "1467:30:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", - "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" - }, - "valueType": { - "contractScope": null, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "version", + "overrides": null, + "scope": 408, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 396, + "name": "ElementaryTypeName", + "src": "1402:5:1" + } + ], "id": 397, - "name": "GuardianSet", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 371, - "src": "1485:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", - "typeString": "struct Wormhole.GuardianSet" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "822d82b3", - "id": 401, - "mutability": "mutable", - "name": "guardian_set_index", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1254, - "src": "1559:32:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 400, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1559:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "4db47840", - "id": 403, - "mutability": "mutable", - "name": "guardian_set_expirity", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1254, - "src": "1677:35:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 402, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1677:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "a31fe409", - "id": 407, - "mutability": "mutable", - "name": "consumedVAAs", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1254, - "src": "1758:44:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 406, - "keyType": { - "id": 404, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1766:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } + "name": "VariableDeclaration", + "src": "1402:13:1" }, - "nodeType": "Mapping", - "src": "1758:24:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "hash", + "overrides": null, + "scope": 408, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 398, + "name": "ElementaryTypeName", + "src": "1425:7:1" + } + ], + "id": 399, + "name": "VariableDeclaration", + "src": "1425:12:1" }, - "valueType": { + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "guardian_set_index", + "overrides": null, + "scope": 408, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 400, + "name": "ElementaryTypeName", + "src": "1447:6:1" + } + ], + "id": 401, + "name": "VariableDeclaration", + "src": "1447:25:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "timestamp", + "overrides": null, + "scope": 408, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 402, + "name": "ElementaryTypeName", + "src": "1482:6:1" + } + ], + "id": 403, + "name": "VariableDeclaration", + "src": "1482:16:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "action", + "overrides": null, + "scope": 408, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 404, + "name": "ElementaryTypeName", + "src": "1508:5:1" + } + ], "id": 405, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1777:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "name": "VariableDeclaration", + "src": "1508:12:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "payload", + "overrides": null, + "scope": 408, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 406, + "name": "ElementaryTypeName", + "src": "1530:5:1" + } + ], + "id": 407, + "name": "VariableDeclaration", + "src": "1530:13:1" } - }, - "value": null, - "visibility": "public" + ], + "id": 408, + "name": "StructDefinition", + "src": "1375:175:1" }, { - "constant": false, - "functionSelector": "b6694c2a", - "id": 411, - "mutability": "mutable", - "name": "wrappedAssets", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1254, - "src": "1857:48:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" + "attributes": { + "constant": false, + "functionSelector": "42b0aefa", + "mutability": "mutable", + "name": "guardian_sets", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(uint32 => struct Wormhole.GuardianSet)", + "value": null, + "visibility": "public" }, - "typeName": { - "id": 410, - "keyType": { - "id": 408, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1865:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "1857:27:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - }, - "valueType": { - "id": 409, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1876:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "children": [ + { + "attributes": { + "type": "mapping(uint32 => struct Wormhole.GuardianSet)" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 409, + "name": "ElementaryTypeName", + "src": "1617:6:1" + }, + { + "attributes": { + "contractScope": null, + "name": "GuardianSet", + "referencedDeclaration": 371, + "type": "struct Wormhole.GuardianSet" + }, + "id": 410, + "name": "UserDefinedTypeName", + "src": "1627:11:1" + } + ], + "id": 411, + "name": "Mapping", + "src": "1609:30:1" } - }, - "value": null, - "visibility": "public" + ], + "id": 412, + "name": "VariableDeclaration", + "src": "1609:51:1" }, { - "constant": false, - "functionSelector": "1a2be4da", - "id": 415, - "mutability": "mutable", - "name": "isWrappedAsset", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1254, - "src": "1911:46:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "attributes": { + "constant": false, + "functionSelector": "822d82b3", + "mutability": "mutable", + "name": "guardian_set_index", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "public" }, - "typeName": { - "id": 414, - "keyType": { - "id": 412, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1919:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1911:24:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, "id": 413, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1930:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "name": "ElementaryTypeName", + "src": "1701:6:1" } - }, - "value": null, - "visibility": "public" + ], + "id": 414, + "name": "VariableDeclaration", + "src": "1701:32:1" }, { - "body": { - "id": 442, - "nodeType": "Block", - "src": "2085:239:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 428, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 424, - "name": "guardian_sets", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 399, - "src": "2095:13:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", - "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" - } - }, - "id": 426, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 425, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2109:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2095:16:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage", - "typeString": "struct Wormhole.GuardianSet storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 427, - "name": "initial_guardian_set", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 417, - "src": "2114:20:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet memory" - } - }, - "src": "2095:39:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage", - "typeString": "struct Wormhole.GuardianSet storage ref" - } - }, - "id": 429, - "nodeType": "ExpressionStatement", - "src": "2095:39:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 432, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 430, - "name": "guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 401, - "src": "2187:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 431, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2208:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2187:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 433, - "nodeType": "ExpressionStatement", - "src": "2187:22:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 436, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 434, - "name": "guardian_set_expirity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 403, - "src": "2219:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 435, - "name": "_guardian_set_expirity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2243:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "2219:46:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 437, - "nodeType": "ExpressionStatement", - "src": "2219:46:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 440, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 438, - "name": "wrappedAssetMaster", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 359, - "src": "2276:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 439, - "name": "wrapped_asset_master", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 419, - "src": "2297:20:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2276:41:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 441, - "nodeType": "ExpressionStatement", - "src": "2276:41:1" - } - ] + "attributes": { + "constant": false, + "functionSelector": "4db47840", + "mutability": "mutable", + "name": "guardian_set_expirity", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "public" }, - "documentation": null, - "id": 443, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 422, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 417, - "mutability": "mutable", - "name": "initial_guardian_set", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 443, - "src": "1976:39:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet" - }, - "typeName": { - "contractScope": null, - "id": 416, - "name": "GuardianSet", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 371, - "src": "1976:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", - "typeString": "struct Wormhole.GuardianSet" - } - }, - "value": null, - "visibility": "internal" + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" }, - { - "constant": false, - "id": 419, - "mutability": "mutable", - "name": "wrapped_asset_master", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 443, - "src": "2017:28:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "id": 415, + "name": "ElementaryTypeName", + "src": "1819:6:1" + } + ], + "id": 416, + "name": "VariableDeclaration", + "src": "1819:35:1" + }, + { + "attributes": { + "constant": false, + "functionSelector": "a31fe409", + "mutability": "mutable", + "name": "consumedVAAs", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(bytes32 => bool)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(bytes32 => bool)" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 417, + "name": "ElementaryTypeName", + "src": "1908:7:1" }, - "typeName": { + { + "attributes": { + "name": "bool", + "type": "bool" + }, "id": 418, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2017:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 421, - "mutability": "mutable", - "name": "_guardian_set_expirity", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 443, - "src": "2047:29:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 420, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2047:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1975:102:1" - }, - "returnParameters": { - "id": 423, - "nodeType": "ParameterList", - "parameters": [], - "src": "2085:0:1" - }, - "scope": 1254, - "src": "1964:360:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" + "name": "ElementaryTypeName", + "src": "1919:4:1" + } + ], + "id": 419, + "name": "Mapping", + "src": "1900:24:1" + } + ], + "id": 420, + "name": "VariableDeclaration", + "src": "1900:44:1" }, { - "body": { - "id": 454, - "nodeType": "Block", - "src": "2410:42:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 450, - "name": "guardian_sets", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 399, - "src": "2427:13:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", - "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" - } + "attributes": { + "constant": false, + "functionSelector": "b6694c2a", + "mutability": "mutable", + "name": "wrappedAssets", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(bytes32 => address)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(bytes32 => address)" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" }, - "id": 452, - "indexExpression": { - "argumentTypes": null, - "id": 451, - "name": "idx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 445, - "src": "2441:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } + "id": 421, + "name": "ElementaryTypeName", + "src": "2007:7:1" + }, + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2427:18:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage", - "typeString": "struct Wormhole.GuardianSet storage ref" - } - }, - "functionReturnParameters": 449, - "id": 453, - "nodeType": "Return", - "src": "2420:25:1" - } - ] - }, - "documentation": null, - "functionSelector": "f951975a", - "id": 455, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getGuardianSet", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 446, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 445, - "mutability": "mutable", - "name": "idx", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 455, - "src": "2354:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 444, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2354:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2353:12:1" - }, - "returnParameters": { - "id": 449, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 448, - "mutability": "mutable", - "name": "gs", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 455, - "src": "2387:21:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet" - }, - "typeName": { - "contractScope": null, - "id": 447, - "name": "GuardianSet", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 371, - "src": "2387:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", - "typeString": "struct Wormhole.GuardianSet" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2386:23:1" - }, - "scope": 1254, - "src": "2330:122:1", - "stateMutability": "view", - "virtual": false, - "visibility": "public" + "id": 422, + "name": "ElementaryTypeName", + "src": "2018:7:1" + } + ], + "id": 423, + "name": "Mapping", + "src": "1999:27:1" + } + ], + "id": 424, + "name": "VariableDeclaration", + "src": "1999:48:1" }, { - "body": { - "id": 692, - "nodeType": "Block", - "src": "2531:1801:1", - "statements": [ - { - "assignments": [463], - "declarations": [ - { + "attributes": { + "constant": false, + "functionSelector": "1a2be4da", + "mutability": "mutable", + "name": "isWrappedAsset", + "overrides": null, + "scope": 1420, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => bool)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => bool)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 425, + "name": "ElementaryTypeName", + "src": "2061:7:1" + }, + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 426, + "name": "ElementaryTypeName", + "src": "2072:4:1" + } + ], + "id": 427, + "name": "Mapping", + "src": "2053:24:1" + } + ], + "id": 428, + "name": "VariableDeclaration", + "src": "2053:46:1" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": true, + "kind": "constructor", + "modifiers": [null], + "name": "", + "overrides": null, + "scope": 1420, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { "constant": false, - "id": 463, "mutability": "mutable", - "name": "version", - "nodeType": "VariableDeclaration", + "name": "initial_guardian_set", "overrides": null, - "scope": 692, - "src": "2541:13:1", + "scope": 456, "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 462, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2541:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, + "storageLocation": "memory", + "type": "struct Wormhole.GuardianSet", "value": null, "visibility": "internal" - } - ], - "id": 468, - "initialValue": { - "argumentTypes": null, - "arguments": [ + }, + "children": [ { - "argumentTypes": null, - "hexValue": "30", - "id": 466, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2569:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "attributes": { + "contractScope": null, + "name": "GuardianSet", + "referencedDeclaration": 371, + "type": "struct Wormhole.GuardianSet" }, - "value": "0" + "id": 429, + "name": "UserDefinedTypeName", + "src": "2118:11:1" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "expression": { - "argumentTypes": null, - "id": 464, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "2557:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 465, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "2557:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 467, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2557:14:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } + "id": 430, + "name": "VariableDeclaration", + "src": "2118:39:1" }, - "nodeType": "VariableDeclarationStatement", - "src": "2541:30:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "wrapped_asset_master", + "overrides": null, + "scope": 456, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" }, - "id": 472, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "id": 431, + "name": "ElementaryTypeName", + "src": "2159:7:1" + } + ], + "id": 432, + "name": "VariableDeclaration", + "src": "2159:28:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_guardian_set_expirity", + "overrides": null, + "scope": 456, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 433, + "name": "ElementaryTypeName", + "src": "2189:6:1" + } + ], + "id": 434, + "name": "VariableDeclaration", + "src": "2189:29:1" + } + ], + "id": 435, + "name": "ParameterList", + "src": "2117:102:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 436, + "name": "ParameterList", + "src": "2227:0:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { "argumentTypes": null, - "id": 470, - "name": "version", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 463, - "src": "2589:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 471, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2600:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2589:12:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5641412076657273696f6e20696e636f6d70617469626c65", - "id": 473, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2603:26:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", - "typeString": "literal_string \"VAA version incompatible\"" - }, - "value": "VAA version incompatible" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", - "typeString": "literal_string \"VAA version incompatible\"" - } - ], - "id": 469, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "2581:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 474, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2581:49:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 475, - "nodeType": "ExpressionStatement", - "src": "2581:49:1" - }, - { - "assignments": [477], - "declarations": [ - { - "constant": false, - "id": 477, - "mutability": "mutable", - "name": "vaa_guardian_set_index", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 692, - "src": "2687:29:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 476, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2687:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 482, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "31", - "id": 480, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2732:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - } - ], - "expression": { - "argumentTypes": null, - "id": 478, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "2719:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 479, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint32", - "nodeType": "MemberAccess", - "referencedDeclaration": 163, - "src": "2719:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint32)" - } - }, - "id": 481, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2719:15:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2687:47:1" - }, - { - "assignments": [484], - "declarations": [ - { - "constant": false, - "id": 484, - "mutability": "mutable", - "name": "len_signers", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 692, - "src": "2745:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 483, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2745:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 489, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "35", - "id": 487, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2779:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - } - ], - "expression": { - "argumentTypes": null, - "id": 485, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "2767:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 486, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "2767:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2767:14:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2745:36:1" - }, - { - "assignments": [491], - "declarations": [ - { - "constant": false, - "id": 491, - "mutability": "mutable", - "name": "offset", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 692, - "src": "2791:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 490, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "2791:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 497, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 496, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "36", - "id": 492, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2805:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_6_by_1", - "typeString": "int_const 6" - }, - "value": "6" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 495, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3636", - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2809:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_66_by_1", - "typeString": "int_const 66" - }, - "value": "66" - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 494, - "name": "len_signers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2814:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2809:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2805:20:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2791:34:1" - }, - { - "assignments": [499], - "declarations": [ - { - "constant": false, - "id": 499, - "mutability": "mutable", - "name": "hash", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 692, - "src": "2947:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 498, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2947:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 510, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 503, - "name": "offset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "2982:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 504, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "2990:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 505, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2990:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 506, - "name": "offset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "3003:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2990:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 501, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "2972:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "slice", - "nodeType": "MemberAccess", - "referencedDeclaration": 55, - "src": "2972:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" - } + "operator": "=", + "type": "struct Wormhole.GuardianSet storage ref" }, - "id": 508, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2972:38:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "struct Wormhole.GuardianSet storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 412, + "type": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)", + "value": "guardian_sets" + }, + "id": 437, + "name": "Identifier", + "src": "2237:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 438, + "name": "Literal", + "src": "2251:1:1" + } + ], + "id": 439, + "name": "IndexAccess", + "src": "2237:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 430, + "type": "struct Wormhole.GuardianSet memory", + "value": "initial_guardian_set" + }, + "id": 440, + "name": "Identifier", + "src": "2256:20:1" + } + ], + "id": 441, + "name": "Assignment", + "src": "2237:39:1" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 500, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "2962:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 509, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2962:49:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } + "id": 442, + "name": "ExpressionStatement", + "src": "2237:39:1" }, - "nodeType": "VariableDeclarationStatement", - "src": "2947:64:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ + { + "children": [ { - "argumentTypes": null, - "id": 515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "3029:19:1", - "subExpression": { + "attributes": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 512, - "name": "consumedVAAs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 407, - "src": "3030:12:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" + }, + "id": 443, + "name": "Identifier", + "src": "2329:18:1" }, - "id": 514, - "indexExpression": { - "argumentTypes": null, - "id": 513, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "3043:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 444, + "name": "Literal", + "src": "2350:1:1" + } + ], + "id": 445, + "name": "Assignment", + "src": "2329:22:1" + } + ], + "id": 446, + "name": "ExpressionStatement", + "src": "2329:22:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 416, + "type": "uint32", + "value": "guardian_set_expirity" + }, + "id": 447, + "name": "Identifier", + "src": "2361:21:1" }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 434, + "type": "uint32", + "value": "_guardian_set_expirity" + }, + "id": 448, + "name": "Identifier", + "src": "2385:22:1" + } + ], + "id": 449, + "name": "Assignment", + "src": "2361:46:1" + } + ], + "id": 450, + "name": "ExpressionStatement", + "src": "2361:46:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 359, + "type": "address", + "value": "wrappedAssetMaster" + }, + "id": 451, + "name": "Identifier", + "src": "2418:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 432, + "type": "address", + "value": "wrapped_asset_master" + }, + "id": 452, + "name": "Identifier", + "src": "2439:20:1" + } + ], + "id": 453, + "name": "Assignment", + "src": "2418:41:1" + } + ], + "id": 454, + "name": "ExpressionStatement", + "src": "2418:41:1" + } + ], + "id": 455, + "name": "Block", + "src": "2227:239:1" + } + ], + "id": 456, + "name": "FunctionDefinition", + "src": "2106:360:1" + }, + { + "attributes": { + "documentation": null, + "functionSelector": "f951975a", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "getGuardianSet", + "overrides": null, + "scope": 1420, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "idx", + "overrides": null, + "scope": 468, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 457, + "name": "ElementaryTypeName", + "src": "2496:6:1" + } + ], + "id": 458, + "name": "VariableDeclaration", + "src": "2496:10:1" + } + ], + "id": 459, + "name": "ParameterList", + "src": "2495:12:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "gs", + "overrides": null, + "scope": 468, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct Wormhole.GuardianSet", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "GuardianSet", + "referencedDeclaration": 371, + "type": "struct Wormhole.GuardianSet" + }, + "id": 460, + "name": "UserDefinedTypeName", + "src": "2529:11:1" + } + ], + "id": 461, + "name": "VariableDeclaration", + "src": "2529:21:1" + } + ], + "id": 462, + "name": "ParameterList", + "src": "2528:23:1" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 462 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3030:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "type": "struct Wormhole.GuardianSet storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 412, + "type": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)", + "value": "guardian_sets" + }, + "id": 463, + "name": "Identifier", + "src": "2569:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 458, + "type": "uint32", + "value": "idx" + }, + "id": 464, + "name": "Identifier", + "src": "2583:3:1" } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5641412077617320616c7265616479206578656375746564", - "id": 516, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3050:26:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", - "typeString": "literal_string \"VAA was already executed\"" - }, - "value": "VAA was already executed" + ], + "id": 465, + "name": "IndexAccess", + "src": "2569:18:1" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", - "typeString": "literal_string \"VAA was already executed\"" - } - ], - "id": 511, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "3021:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 517, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3021:56:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 518, - "nodeType": "ExpressionStatement", - "src": "3021:56:1" - }, - { - "assignments": [520], - "declarations": [ - { + "id": 466, + "name": "Return", + "src": "2562:25:1" + } + ], + "id": 467, + "name": "Block", + "src": "2552:42:1" + } + ], + "id": 468, + "name": "FunctionDefinition", + "src": "2472:122:1" + }, + { + "attributes": { + "documentation": null, + "functionSelector": "3bc0aee6", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "submitVAA", + "overrides": null, + "scope": 1420, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { "constant": false, - "id": 520, "mutability": "mutable", - "name": "guardian_set", - "nodeType": "VariableDeclaration", + "name": "vaa", "overrides": null, - "scope": 692, - "src": "3088:31:1", + "scope": 524, "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet" - }, - "typeName": { - "contractScope": null, - "id": 519, - "name": "GuardianSet", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 371, - "src": "3088:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", - "typeString": "struct Wormhole.GuardianSet" - } - }, + "storageLocation": "calldata", + "type": "bytes", "value": null, "visibility": "internal" - } - ], - "id": 524, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 521, - "name": "guardian_sets", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 399, - "src": "3122:13:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", - "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" - } }, - "id": 523, - "indexExpression": { - "argumentTypes": null, - "id": 522, - "name": "vaa_guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 477, - "src": "3136:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3122:37:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage", - "typeString": "struct Wormhole.GuardianSet storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3088:71:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ + "children": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "attributes": { + "name": "bytes", + "type": "bytes" }, - "id": 535, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 529, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 526, - "name": "guardian_set", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 520, - "src": "3177:12:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet memory" - } - }, - "id": 527, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "expiration_time", - "nodeType": "MemberAccess", - "referencedDeclaration": 370, - "src": "3177:28:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 528, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3209:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3177:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 534, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 530, - "name": "guardian_set", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 520, - "src": "3214:12:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet memory" - } - }, - "id": 531, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "expiration_time", - "nodeType": "MemberAccess", - "referencedDeclaration": 370, - "src": "3214:28:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 532, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "3245:5:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 533, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3245:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3214:46:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3177:83:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "677561726469616e20736574206861732065787069726564", - "id": 536, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3262:26:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", - "typeString": "literal_string \"guardian set has expired\"" - }, - "value": "guardian set has expired" + "id": 469, + "name": "ElementaryTypeName", + "src": "2628:5:1" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", - "typeString": "literal_string \"guardian set has expired\"" - } - ], - "id": 525, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "3169:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 537, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3169:120:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 538, - "nodeType": "ExpressionStatement", - "src": "3169:120:1" + "id": 470, + "name": "VariableDeclaration", + "src": "2628:18:1" + } + ], + "id": 471, + "name": "ParameterList", + "src": "2618:34:1" + }, + { + "attributes": { + "parameters": [null] }, - { - "expression": { - "argumentTypes": null, - "arguments": [ + "children": [], + "id": 474, + "name": "ParameterList", + "src": "2673:0:1" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3657, + "type": "modifier ()", + "value": "nonReentrant" + }, + "id": 472, + "name": "Identifier", + "src": "2660:12:1" + } + ], + "id": 473, + "name": "ModifierInvocation", + "src": "2660:12:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [476] + }, + "children": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "parsed_vaa", + "overrides": null, + "scope": 523, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct Wormhole.ParsedVAA", + "value": null, + "visibility": "internal" }, - "id": 552, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ParsedVAA", + "referencedDeclaration": 408, + "type": "struct Wormhole.ParsedVAA" + }, + "id": 475, + "name": "UserDefinedTypeName", + "src": "2683:9:1" + } + ], + "id": 476, + "name": "VariableDeclaration", + "src": "2683:27:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "struct Wormhole.ParsedVAA memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 781, + "type": "function (bytes calldata) view returns (struct Wormhole.ParsedVAA memory)", + "value": "parseAndVerifyVAA" + }, + "id": 477, + "name": "Identifier", + "src": "2713:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 470, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 478, + "name": "Identifier", + "src": "2731:3:1" + } + ], + "id": 479, + "name": "FunctionCall", + "src": "2713:22:1" + } + ], + "id": 480, + "name": "VariableDeclarationStatement", + "src": "2683:52:1" + }, + { + "children": [ + { + "attributes": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, - "id": 550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "action", + "referencedDeclaration": 405, + "type": "uint8" + }, + "children": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "attributes": { "argumentTypes": null, - "components": [ - { + "overloadedDeclarations": [null], + "referencedDeclaration": 476, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 481, + "name": "Identifier", + "src": "2772:10:1" + } + ], + "id": 482, + "name": "MemberAccess", + "src": "2772:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30783031", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "0x01" + }, + "id": 483, + "name": "Literal", + "src": "2793:4:1" + } + ], + "id": 484, + "name": "BinaryOperation", + "src": "2772:25:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", + "typeString": "literal_string \"only the current guardian set can change the guardian set\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 485, + "name": "Identifier", + "src": "2813:7:1" + }, + { + "attributes": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint32", + "typeString": "uint32" }, - "id": 544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 540, - "name": "guardian_set", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 520, - "src": "3309:12:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet memory" - } - }, - "id": 541, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberName": "keys", - "nodeType": "MemberAccess", - "referencedDeclaration": 368, - "src": "3309:17:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" + "member_name": "guardian_set_index", + "referencedDeclaration": 401, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 476, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 486, + "name": "Identifier", + "src": "2821:10:1" } - }, - "id": 542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3309:24:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + ], + "id": 487, + "name": "MemberAccess", + "src": "2821:29:1" }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "34", - "id": 543, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3336:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" }, - "value": "4" - }, - "src": "3309:28:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "id": 488, + "name": "Identifier", + "src": "2854:18:1" } - } - ], - "id": 545, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3308:30:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 546, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3341:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "src": "3308:34:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 548, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3307:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 549, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3346:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "3307:40:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "id": 551, - "name": "len_signers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "3351:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3307:55:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f2071756f72756d", - "id": 553, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3364:11:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", - "typeString": "literal_string \"no quorum\"" - }, - "value": "no quorum" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", - "typeString": "literal_string \"no quorum\"" - } - ], - "id": 539, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "3299:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3299:77:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 555, - "nodeType": "ExpressionStatement", - "src": "3299:77:1" - }, - { - "body": { - "id": 629, - "nodeType": "Block", - "src": "3426:334:1", - "statements": [ - { - "assignments": [567], - "declarations": [ - { - "constant": false, - "id": 567, - "mutability": "mutable", - "name": "index", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 629, - "src": "3440:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 566, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3440:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 576, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 574, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "36", - "id": 570, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3466:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_6_by_1", - "typeString": "int_const 6" - }, - "value": "6" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 571, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "3470:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3636", - "id": 572, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3474:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_66_by_1", - "typeString": "int_const 66" - }, - "value": "66" - }, - "src": "3470:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3466:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 568, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3454:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 569, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "3454:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3454:23:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3440:37:1" - }, - { - "assignments": [578], - "declarations": [ - { - "constant": false, - "id": 578, - "mutability": "mutable", - "name": "r", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 629, - "src": "3491:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 577, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3491:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 587, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 585, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "37", - "id": 581, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3517:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_7_by_1", - "typeString": "int_const 7" - }, - "value": "7" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 584, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 582, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "3521:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3636", - "id": 583, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3525:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_66_by_1", - "typeString": "int_const 66" - }, - "value": "66" - }, - "src": "3521:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3517:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 579, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3503:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 580, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toBytes32", - "nodeType": "MemberAccess", - "referencedDeclaration": 298, - "src": "3503:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (bytes32)" - } - }, - "id": 586, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3503:25:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3491:37:1" - }, - { - "assignments": [589], - "declarations": [ - { - "constant": false, - "id": 589, - "mutability": "mutable", - "name": "s", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 629, - "src": "3542:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 588, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3542:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 598, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3339", - "id": 592, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3568:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_39_by_1", - "typeString": "int_const 39" - }, - "value": "39" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 595, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 593, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "3573:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3636", - "id": 594, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3577:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_66_by_1", - "typeString": "int_const 66" - }, - "value": "66" - }, - "src": "3573:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3568:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 590, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3554:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 591, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toBytes32", - "nodeType": "MemberAccess", - "referencedDeclaration": 298, - "src": "3554:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (bytes32)" - } - }, - "id": 597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3554:26:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3542:38:1" - }, - { - "assignments": [600], - "declarations": [ - { - "constant": false, - "id": 600, - "mutability": "mutable", - "name": "v", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 629, - "src": "3594:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 599, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3594:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 609, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3731", - "id": 603, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3616:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_71_by_1", - "typeString": "int_const 71" - }, - "value": "71" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 606, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 604, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "3621:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3636", - "id": 605, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3625:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_66_by_1", - "typeString": "int_const 66" - }, - "value": "66" - }, - "src": "3621:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3616:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 601, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3604:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "3604:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3604:24:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3594:34:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 612, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 610, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 600, - "src": "3642:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "3237", - "id": 611, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3647:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_27_by_1", - "typeString": "int_const 27" - }, - "value": "27" - }, - "src": "3642:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 613, - "nodeType": "ExpressionStatement", - "src": "3642:7:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 625, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 616, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "3681:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } + ], + "id": 489, + "name": "BinaryOperation", + "src": "2821:51:1" }, { - "argumentTypes": null, - "id": 617, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 600, - "src": "3687:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 618, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 578, - "src": "3690:1:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 619, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 589, - "src": "3693:1:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } + "attributes": { + "argumentTypes": null, + "hexvalue": "6f6e6c79207468652063757272656e7420677561726469616e207365742063616e206368616e67652074686520677561726469616e20736574", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"only the current guardian set can change the guardian set\"", + "value": "only the current guardian set can change the guardian set" + }, + "id": 490, + "name": "Literal", + "src": "2874:59:1" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 615, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -6, - "src": "3671:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 620, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3671:24:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { + "id": 491, + "name": "FunctionCall", + "src": "2813:121:1" + } + ], + "id": 492, + "name": "ExpressionStatement", + "src": "2813:121:1" + }, + { + "children": [ + { + "attributes": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 621, - "name": "guardian_set", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 520, - "src": "3699:12:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet memory" - } + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 889, + "type": "function (bytes memory)", + "value": "vaaUpdateGuardianSet" + }, + "id": 493, + "name": "Identifier", + "src": "2948:20:1" }, - "id": 622, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "payload", + "referencedDeclaration": 407, + "type": "bytes memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 476, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 494, + "name": "Identifier", + "src": "2969:10:1" + } + ], + "id": 495, + "name": "MemberAccess", + "src": "2969:18:1" + } + ], + "id": 496, + "name": "FunctionCall", + "src": "2948:40:1" + } + ], + "id": 497, + "name": "ExpressionStatement", + "src": "2948:40:1" + } + ], + "id": 498, + "name": "Block", + "src": "2799:200:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberName": "keys", - "nodeType": "MemberAccess", - "referencedDeclaration": 368, - "src": "3699:17:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" + "member_name": "action", + "referencedDeclaration": 405, + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 476, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 499, + "name": "Identifier", + "src": "3009:10:1" } - }, - "id": 624, - "indexExpression": { + ], + "id": 500, + "name": "MemberAccess", + "src": "3009:17:1" + }, + { + "attributes": { "argumentTypes": null, - "id": 623, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 567, - "src": "3717:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3699:24:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3671:52:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "564141207369676e617475726520696e76616c6964", - "id": 626, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3725:23:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", - "typeString": "literal_string \"VAA signature invalid\"" - }, - "value": "VAA signature invalid" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", - "typeString": "literal_string \"VAA signature invalid\"" - } - ], - "id": 614, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "3663:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 627, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3663:86:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 628, - "nodeType": "ExpressionStatement", - "src": "3663:86:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 562, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 560, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "3404:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 561, - "name": "len_signers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "3408:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3404:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 630, - "initializationExpression": { - "assignments": [557], - "declarations": [ - { - "constant": false, - "id": 557, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 630, - "src": "3392:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 556, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3392:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 559, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 558, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3401:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "3392:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "3421:3:1", - "subExpression": { - "argumentTypes": null, - "id": 563, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 557, - "src": "3421:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 565, - "nodeType": "ExpressionStatement", - "src": "3421:3:1" - }, - "nodeType": "ForStatement", - "src": "3387:373:1" - }, - { - "assignments": [632], - "declarations": [ - { - "constant": false, - "id": 632, - "mutability": "mutable", - "name": "action", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 692, - "src": "3770:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 631, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3770:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 639, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 637, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 635, - "name": "offset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "3797:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "hexValue": "34", - "id": 636, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3806:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "3797:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 633, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3785:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 634, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "3785:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 638, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3785:23:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3770:38:1" - }, - { - "assignments": [641], - "declarations": [ - { - "constant": false, - "id": 641, - "mutability": "mutable", - "name": "payload", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 692, - "src": "3818:20:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 640, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3818:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 655, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 644, - "name": "offset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "3851:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "hexValue": "35", - "id": 645, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3860:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "src": "3851:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 653, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 647, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3863:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3863:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 649, - "name": "offset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "3877:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "hexValue": "35", - "id": 650, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3886:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "src": "3877:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 652, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3876:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3863:25:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 642, - "name": "vaa", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3841:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 643, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "slice", - "nodeType": "MemberAccess", - "referencedDeclaration": 55, - "src": "3841:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" - } - }, - "id": 654, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3841:48:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3818:71:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 658, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 656, - "name": "action", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 632, - "src": "3927:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30783031", - "id": 657, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3937:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "0x01" - }, - "src": "3927:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 673, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 671, - "name": "action", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 632, - "src": "4135:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30783130", - "id": 672, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4145:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_16_by_1", - "typeString": "int_const 16" - }, - "value": "0x10" - }, - "src": "4135:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 683, - "nodeType": "Block", - "src": "4202:53:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "696e76616c69642056414120616374696f6e", - "id": 680, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4223:20:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", - "typeString": "literal_string \"invalid VAA action\"" - }, - "value": "invalid VAA action" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", - "typeString": "literal_string \"invalid VAA action\"" - } - ], - "id": 679, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [-19, -19], - "referencedDeclaration": -19, - "src": "4216:6:1", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 681, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4216:28:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 682, - "nodeType": "ExpressionStatement", - "src": "4216:28:1" - } - ] - }, - "id": 684, - "nodeType": "IfStatement", - "src": "4131:124:1", - "trueBody": { - "id": 678, - "nodeType": "Block", - "src": "4151:45:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 675, - "name": "payload", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 641, - "src": "4177:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 674, - "name": "vaaTransfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 927, - "src": "4165:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes memory)" - } - }, - "id": 676, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4165:20:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 677, - "nodeType": "ExpressionStatement", - "src": "4165:20:1" - } - ] - } - }, - "id": 685, - "nodeType": "IfStatement", - "src": "3923:332:1", - "trueBody": { - "id": 670, - "nodeType": "Block", - "src": "3943:182:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 662, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 660, - "name": "vaa_guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 477, - "src": "3965:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 661, - "name": "guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 401, - "src": "3991:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "3965:44:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6f6e6c79207468652063757272656e7420677561726469616e207365742063616e206368616e67652074686520677561726469616e20736574", - "id": 663, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4011:59:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", - "typeString": "literal_string \"only the current guardian set can change the guardian set\"" - }, - "value": "only the current guardian set can change the guardian set" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", - "typeString": "literal_string \"only the current guardian set can change the guardian set\"" - } - ], - "id": 659, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "3957:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 664, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3957:114:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 665, - "nodeType": "ExpressionStatement", - "src": "3957:114:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 667, - "name": "payload", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 641, - "src": "4106:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 666, - "name": "vaaUpdateGuardianSet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 792, - "src": "4085:20:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes memory)" - } - }, - "id": 668, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4085:29:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 669, - "nodeType": "ExpressionStatement", - "src": "4085:29:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 690, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 686, - "name": "consumedVAAs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 407, - "src": "4300:12:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 688, - "indexExpression": { - "argumentTypes": null, - "id": 687, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "4313:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4300:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 689, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4321:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "4300:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 691, - "nodeType": "ExpressionStatement", - "src": "4300:25:1" - } - ] - }, - "documentation": null, - "functionSelector": "3bc0aee6", - "id": 693, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 460, - "modifierName": { - "argumentTypes": null, - "id": 459, - "name": "nonReentrant", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3071, - "src": "2518:12:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2518:12:1" - } - ], - "name": "submitVAA", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 458, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 457, - "mutability": "mutable", - "name": "vaa", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 693, - "src": "2486:18:1", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 456, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2486:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2476:34:1" - }, - "returnParameters": { - "id": 461, - "nodeType": "ParameterList", - "parameters": [], - "src": "2531:0:1" - }, - "scope": 1254, - "src": "2458:1874:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 791, - "nodeType": "Block", - "src": "4395:755:1", - "statements": [ - { - "assignments": [699], - "declarations": [ - { - "constant": false, - "id": 699, - "mutability": "mutable", - "name": "new_guardian_set_index", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 791, - "src": "4405:29:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 698, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "4405:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 704, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 702, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4451:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "expression": { - "argumentTypes": null, - "id": 700, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 695, - "src": "4437:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 701, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint32", - "nodeType": "MemberAccess", - "referencedDeclaration": 163, - "src": "4437:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint32)" - } - }, - "id": 703, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4437:16:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4405:48:1" - }, - { - "assignments": [706], - "declarations": [ - { - "constant": false, - "id": 706, - "mutability": "mutable", - "name": "len", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 791, - "src": "4463:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 705, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4463:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 711, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "34", - "id": 709, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4488:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - } - ], - "expression": { - "argumentTypes": null, - "id": 707, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 695, - "src": "4475:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 708, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "4475:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 710, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4475:15:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4463:27:1" - }, - { - "assignments": [716], - "declarations": [ - { - "constant": false, - "id": 716, - "mutability": "mutable", - "name": "new_guardians", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 791, - "src": "4501:30:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 714, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4501:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 715, - "length": null, - "nodeType": "ArrayTypeName", - "src": "4501:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 722, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 720, - "name": "len", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "4548:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 719, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "4534:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (address[] memory)" - }, - "typeName": { - "baseType": { - "id": 717, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4538:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 718, - "length": null, - "nodeType": "ArrayTypeName", - "src": "4538:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - } - }, - "id": 721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4534:18:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4501:51:1" - }, - { - "body": { - "id": 750, - "nodeType": "Block", - "src": "4593:103:1", - "statements": [ - { - "assignments": [734], - "declarations": [ - { - "constant": false, - "id": 734, - "mutability": "mutable", - "name": "addr", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 750, - "src": "4607:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 733, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4607:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 743, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 741, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "35", - "id": 737, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4637:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 740, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 738, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "4641:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3230", - "id": 739, + "hexvalue": "30783130", "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", "lValueRequested": false, - "nodeType": "Literal", - "src": "4645:2:1", "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_20_by_1", - "typeString": "int_const 20" - }, - "value": "20" + "token": "number", + "type": "int_const 16", + "value": "0x10" }, - "src": "4641:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4637:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "id": 501, + "name": "Literal", + "src": "3030:4:1" } ], - "expression": { - "argumentTypes": null, - "id": 735, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 695, - "src": "4622:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 736, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 82, - "src": "4622:14:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (address)" - } + "id": 502, + "name": "BinaryOperation", + "src": "3009:25:1" }, - "id": 742, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4622:26:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4607:41:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 748, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 744, - "name": "new_guardians", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "4662:13:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 746, - "indexExpression": { - "argumentTypes": null, - "id": 745, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "4676:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4662:16:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 747, - "name": "addr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "4681:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4662:23:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 749, - "nodeType": "ExpressionStatement", - "src": "4662:23:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 729, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 727, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "4579:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 728, - "name": "len", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "4583:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4579:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 751, - "initializationExpression": { - "assignments": [724], - "declarations": [ - { - "constant": false, - "id": 724, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 751, - "src": "4567:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 723, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4567:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 726, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 725, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4576:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "4567:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 731, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4588:3:1", - "subExpression": { - "argumentTypes": null, - "id": 730, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "4588:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 732, - "nodeType": "ExpressionStatement", - "src": "4588:3:1" - }, - "nodeType": "ForStatement", - "src": "4562:134:1" - }, - { - "assignments": [753], - "declarations": [ - { - "constant": false, - "id": 753, - "mutability": "mutable", - "name": "old_guardian_set_index", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 791, - "src": "4706:29:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 752, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "4706:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 755, - "initialValue": { - "argumentTypes": null, - "id": 754, - "name": "guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 401, - "src": "4738:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4706:50:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 758, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 756, - "name": "guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 401, - "src": "4766:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 757, - "name": "new_guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 699, - "src": "4787:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "4766:43:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 759, - "nodeType": "ExpressionStatement", - "src": "4766:43:1" - }, - { - "assignments": [761], - "declarations": [ - { - "constant": false, - "id": 761, - "mutability": "mutable", - "name": "new_guardian_set", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 791, - "src": "4820:35:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet" - }, - "typeName": { - "contractScope": null, - "id": 760, - "name": "GuardianSet", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 371, - "src": "4820:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", - "typeString": "struct Wormhole.GuardianSet" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 766, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 763, - "name": "new_guardians", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "4870:13:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "hexValue": "30", - "id": 764, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4885:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 762, - "name": "GuardianSet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "4858:11:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_GuardianSet_$371_storage_ptr_$", - "typeString": "type(struct Wormhole.GuardianSet storage pointer)" - } - }, - "id": 765, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4858:29:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4820:67:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 771, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 767, - "name": "guardian_sets", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 399, - "src": "4897:13:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", - "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" - } - }, - "id": 769, - "indexExpression": { - "argumentTypes": null, - "id": 768, - "name": "guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 401, - "src": "4911:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4897:33:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage", - "typeString": "struct Wormhole.GuardianSet storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 770, - "name": "new_guardian_set", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "4933:16:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", - "typeString": "struct Wormhole.GuardianSet memory" - } - }, - "src": "4897:52:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage", - "typeString": "struct Wormhole.GuardianSet storage ref" - } - }, - "id": 772, - "nodeType": "ExpressionStatement", - "src": "4897:52:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 784, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 773, - "name": "guardian_sets", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 399, - "src": "4959:13:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", - "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" - } - }, - "id": 775, - "indexExpression": { - "argumentTypes": null, - "id": 774, - "name": "old_guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 753, - "src": "4973:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4959:37:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_GuardianSet_$371_storage", - "typeString": "struct Wormhole.GuardianSet storage ref" - } - }, - "id": 776, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "expiration_time", - "nodeType": "MemberAccess", - "referencedDeclaration": 370, - "src": "4959:53:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 779, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "5022:5:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5022:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 778, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5015:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" - }, - "typeName": { - "id": 777, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "5015:6:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5015:23:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 782, - "name": "guardian_set_expirity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 403, - "src": "5041:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "5015:47:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "4959:103:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 785, - "nodeType": "ExpressionStatement", - "src": "4959:103:1" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 787, - "name": "old_guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 753, - "src": "5100:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "argumentTypes": null, - "id": 788, - "name": "guardian_set_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 401, - "src": "5124:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 786, - "name": "LogGuardianSetChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 377, - "src": "5078:21:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint32_$returns$__$", - "typeString": "function (uint32,uint32)" - } - }, - "id": 789, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5078:65:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 790, - "nodeType": "EmitStatement", - "src": "5073:70:1" - } - ] - }, - "documentation": null, - "id": 792, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "vaaUpdateGuardianSet", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 696, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 695, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 792, - "src": "4368:17:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 694, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4368:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4367:19:1" - }, - "returnParameters": { - "id": 697, - "nodeType": "ParameterList", - "parameters": [], - "src": "4395:0:1" - }, - "scope": 1254, - "src": "4338:812:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 926, - "nodeType": "Block", - "src": "5204:1399:1", - "statements": [ - { - "assignments": [798], - "declarations": [ - { - "constant": false, - "id": 798, - "mutability": "mutable", - "name": "source_chain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 926, - "src": "5257:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 797, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "5257:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 803, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "34", - "id": 801, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5291:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - } - ], - "expression": { - "argumentTypes": null, - "id": 799, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "5278:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "5278:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 802, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5278:15:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5257:36:1" - }, - { - "assignments": [805], - "declarations": [ - { - "constant": false, - "id": 805, - "mutability": "mutable", - "name": "target_chain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 926, - "src": "5304:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 804, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "5304:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 810, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "35", - "id": 808, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5338:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - } - ], - "expression": { - "argumentTypes": null, - "id": 806, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "5325:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 807, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "5325:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 809, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5325:15:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5304:36:1" - }, - { - "assignments": [812], - "declarations": [ - { - "constant": false, - "id": 812, - "mutability": "mutable", - "name": "target_address", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 926, - "src": "5459:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 811, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5459:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 819, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_rational_50_by_1", - "typeString": "int_const 50" - }, - "id": 817, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3338", - "id": 815, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5499:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_38_by_1", - "typeString": "int_const 38" - }, - "value": "38" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3132", - "id": 816, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5504:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_12_by_1", - "typeString": "int_const 12" - }, - "value": "12" - }, - "src": "5499:7:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_50_by_1", - "typeString": "int_const 50" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_50_by_1", - "typeString": "int_const 50" - } - ], - "expression": { - "argumentTypes": null, - "id": 813, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "5484:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 814, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 82, - "src": "5484:14:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (address)" - } - }, - "id": 818, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5484:23:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5459:48:1" - }, - { - "assignments": [821], - "declarations": [ - { - "constant": false, - "id": 821, - "mutability": "mutable", - "name": "token_chain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 926, - "src": "5518:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 820, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "5518:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 826, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "3730", - "id": 824, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5551:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_70_by_1", - "typeString": "int_const 70" - }, - "value": "70" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_70_by_1", - "typeString": "int_const 70" - } - ], - "expression": { - "argumentTypes": null, - "id": 822, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "5538:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 823, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "5538:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 825, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5538:16:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5518:36:1" - }, - { - "assignments": [828], - "declarations": [ - { - "constant": false, - "id": 828, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 926, - "src": "5618:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 827, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5618:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 833, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "313034", - "id": 831, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5650:3:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_104_by_1", - "typeString": "int_const 104" - }, - "value": "104" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_104_by_1", - "typeString": "int_const 104" - } - ], - "expression": { - "argumentTypes": null, - "id": 829, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "5635:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 830, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint256", - "nodeType": "MemberAccess", - "referencedDeclaration": 271, - "src": "5635:14:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint256)" - } - }, - "id": 832, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5635:19:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5618:36:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 837, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 835, - "name": "source_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 798, - "src": "5673:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 836, - "name": "target_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 805, - "src": "5689:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5673:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "73616d6520636861696e207472616e736665727320617265206e6f7420737570706f72746564", - "id": 838, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5703:40:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", - "typeString": "literal_string \"same chain transfers are not supported\"" - }, - "value": "same chain transfers are not supported" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", - "typeString": "literal_string \"same chain transfers are not supported\"" - } - ], - "id": 834, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "5665:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 839, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5665:79:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 840, - "nodeType": "ExpressionStatement", - "src": "5665:79:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 844, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 842, - "name": "target_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 805, - "src": "5762:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 843, - "name": "CHAIN_ID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "5778:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5762:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "7472616e73666572206d75737420626520696e636f6d696e67", - "id": 845, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5788:27:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", - "typeString": "literal_string \"transfer must be incoming\"" - }, - "value": "transfer must be incoming" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", - "typeString": "literal_string \"transfer must be incoming\"" - } - ], - "id": 841, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "5754:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 846, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5754:62:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 847, - "nodeType": "ExpressionStatement", - "src": "5754:62:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 850, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 848, - "name": "token_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 821, - "src": "5831:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 849, - "name": "CHAIN_ID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "5846:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5831:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 924, - "nodeType": "Block", - "src": "6452:145:1", - "statements": [ - { - "assignments": [908], - "declarations": [ - { - "constant": false, - "id": 908, - "mutability": "mutable", - "name": "token_address", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 924, - "src": "6466:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 907, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6466:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 915, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_rational_83_by_1", - "typeString": "int_const 83" - }, - "id": 913, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3731", - "id": 911, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6505:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_71_by_1", - "typeString": "int_const 71" - }, - "value": "71" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3132", - "id": 912, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6510:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_12_by_1", - "typeString": "int_const 12" - }, - "value": "12" - }, - "src": "6505:7:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_83_by_1", - "typeString": "int_const 83" - } - } - ], - "expression": { - "argumentTypes": [ + "children": [ { - "typeIdentifier": "t_rational_83_by_1", - "typeString": "int_const 83" - } - ], - "expression": { - "argumentTypes": null, - "id": 909, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "6490:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 910, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 82, - "src": "6490:14:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (address)" - } - }, - "id": 914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6490:23:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6466:47:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 920, - "name": "target_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 812, - "src": "6563:14:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 921, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 828, - "src": "6579:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 917, - "name": "token_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "6535:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ + "children": [ { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 916, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2615, - "src": "6528:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 918, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6528:21:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2615", - "typeString": "contract IERC20" - } - }, - "id": 919, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 2649, - "src": "6528:34:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2615_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2615_$", - "typeString": "function (contract IERC20,address,uint256)" - } - }, - "id": 922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6528:58:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 923, - "nodeType": "ExpressionStatement", - "src": "6528:58:1" - } - ] - }, - "id": 925, - "nodeType": "IfStatement", - "src": "5827:770:1", - "trueBody": { - "id": 906, - "nodeType": "Block", - "src": "5856:590:1", - "statements": [ - { - "assignments": [852], - "declarations": [ - { - "constant": false, - "id": 852, - "mutability": "mutable", - "name": "token_address", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 906, - "src": "5870:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 851, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5870:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 857, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "3731", - "id": 855, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5909:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_71_by_1", - "typeString": "int_const 71" - }, - "value": "71" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_71_by_1", - "typeString": "int_const 71" - } - ], - "expression": { - "argumentTypes": null, - "id": 853, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "5894:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 854, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toBytes32", - "nodeType": "MemberAccess", - "referencedDeclaration": 298, - "src": "5894:14:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (bytes32)" - } - }, - "id": 856, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5894:18:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5870:42:1" - }, - { - "assignments": [859], - "declarations": [ - { - "constant": false, - "id": 859, - "mutability": "mutable", - "name": "asset_id", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 906, - "src": "5926:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 858, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5926:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 867, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 863, - "name": "token_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 821, - "src": "5972:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 864, - "name": "token_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "5985:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "argumentTypes": null, - "id": 861, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "5955:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 862, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5955:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 865, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5955:44:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 860, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "5945:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 866, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5945:55:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5926:74:1" - }, - { - "assignments": [869], - "declarations": [ - { - "constant": false, - "id": 869, - "mutability": "mutable", - "name": "wrapped_asset", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 906, - "src": "6092:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 868, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6092:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 873, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 870, - "name": "wrappedAssets", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "6116:13:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 872, - "indexExpression": { - "argumentTypes": null, - "id": 871, - "name": "asset_id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 859, - "src": "6130:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6116:23:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6092:47:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 879, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 874, - "name": "wrapped_asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 869, - "src": "6157:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 877, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6182:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 876, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6174:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 875, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6174:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 878, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6174:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "6157:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 897, - "nodeType": "IfStatement", - "src": "6153:212:1", - "trueBody": { - "id": 896, - "nodeType": "Block", - "src": "6186:179:1", - "statements": [ - { - "assignments": [881], - "declarations": [ - { - "constant": false, - "id": 881, - "mutability": "mutable", - "name": "asset_decimals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 896, - "src": "6204:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 880, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6204:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 886, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "313033", - "id": 884, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6240:3:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_103_by_1", - "typeString": "int_const 103" - }, - "value": "103" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_103_by_1", - "typeString": "int_const 103" - } - ], - "expression": { - "argumentTypes": null, - "id": 882, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "6227:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 883, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 109, - "src": "6227:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (uint8)" - } - }, - "id": 885, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6227:17:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6204:40:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 894, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 887, - "name": "wrapped_asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 869, - "src": "6262:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { + "attributes": { "argumentTypes": null, - "id": 889, - "name": "asset_id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 859, - "src": "6297:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false }, - { - "argumentTypes": null, - "id": 890, - "name": "token_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 821, - "src": "6307:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 891, - "name": "token_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "6320:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 892, - "name": "asset_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 881, - "src": "6335:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ + "children": [ { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1051, + "type": "function (bytes memory)", + "value": "vaaTransfer" + }, + "id": 503, + "name": "Identifier", + "src": "3050:11:1" }, { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "payload", + "referencedDeclaration": 407, + "type": "bytes memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 476, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 504, + "name": "Identifier", + "src": "3062:10:1" + } + ], + "id": 505, + "name": "MemberAccess", + "src": "3062:18:1" } ], - "id": 888, - "name": "deployWrappedAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 970, - "src": "6278:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_uint8_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,uint8) returns (address)" + "id": 506, + "name": "FunctionCall", + "src": "3050:31:1" + } + ], + "id": 507, + "name": "ExpressionStatement", + "src": "3050:31:1" + } + ], + "id": 508, + "name": "Block", + "src": "3036:56:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", + "typeString": "literal_string \"invalid VAA action\"" + } + ], + "overloadedDeclarations": [-19, -19], + "referencedDeclaration": -19, + "type": "function (string memory) pure", + "value": "revert" + }, + "id": 509, + "name": "Identifier", + "src": "3112:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "696e76616c69642056414120616374696f6e", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"invalid VAA action\"", + "value": "invalid VAA action" + }, + "id": 510, + "name": "Literal", + "src": "3119:20:1" + } + ], + "id": 511, + "name": "FunctionCall", + "src": "3112:28:1" + } + ], + "id": 512, + "name": "ExpressionStatement", + "src": "3112:28:1" + } + ], + "id": 513, + "name": "Block", + "src": "3098:53:1" + } + ], + "id": 514, + "name": "IfStatement", + "src": "3005:146:1" + } + ], + "id": 515, + "name": "IfStatement", + "src": "2768:383:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 420, + "type": "mapping(bytes32 => bool)", + "value": "consumedVAAs" + }, + "id": 516, + "name": "Identifier", + "src": "3196:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "hash", + "referencedDeclaration": 399, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 476, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 517, + "name": "Identifier", + "src": "3209:10:1" + } + ], + "id": 518, + "name": "MemberAccess", + "src": "3209:15:1" + } + ], + "id": 519, + "name": "IndexAccess", + "src": "3196:29:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 520, + "name": "Literal", + "src": "3228:4:1" + } + ], + "id": 521, + "name": "Assignment", + "src": "3196:36:1" + } + ], + "id": 522, + "name": "ExpressionStatement", + "src": "3196:36:1" + } + ], + "id": 523, + "name": "Block", + "src": "2673:566:1" + } + ], + "id": 524, + "name": "FunctionDefinition", + "src": "2600:639:1" + }, + { + "attributes": { + "documentation": null, + "functionSelector": "600b9aa6", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "parseAndVerifyVAA", + "overrides": null, + "scope": 1420, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "vaa", + "overrides": null, + "scope": 781, + "stateVariable": false, + "storageLocation": "calldata", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 525, + "name": "ElementaryTypeName", + "src": "3472:5:1" + } + ], + "id": 526, + "name": "VariableDeclaration", + "src": "3472:18:1" + } + ], + "id": 527, + "name": "ParameterList", + "src": "3471:20:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "parsed_vaa", + "overrides": null, + "scope": 781, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct Wormhole.ParsedVAA", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ParsedVAA", + "referencedDeclaration": 408, + "type": "struct Wormhole.ParsedVAA" + }, + "id": 528, + "name": "UserDefinedTypeName", + "src": "3513:9:1" + } + ], + "id": 529, + "name": "VariableDeclaration", + "src": "3513:27:1" + } + ], + "id": 530, + "name": "ParameterList", + "src": "3512:29:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "version", + "referencedDeclaration": 397, + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 531, + "name": "Identifier", + "src": "3552:10:1" + } + ], + "id": 533, + "name": "MemberAccess", + "src": "3552:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" } - }, - "id": 893, + ], "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6278:72:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" }, - "src": "6262:88:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 895, - "nodeType": "ExpressionStatement", - "src": "6262:88:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 902, - "name": "target_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 812, - "src": "6412:14:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 903, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 828, - "src": "6428:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 899, - "name": "wrapped_asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 869, - "src": "6392:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ + "children": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 534, + "name": "Identifier", + "src": "3573:3:1" } ], - "id": 898, - "name": "WrappedAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "6379:12:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", - "typeString": "type(contract WrappedAsset)" - } + "id": 535, + "name": "MemberAccess", + "src": "3573:11:1" }, - "id": 900, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6379:27:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_WrappedAsset_$1811", - "typeString": "contract WrappedAsset" + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 536, + "name": "Literal", + "src": "3585:1:1" } - }, - "id": 901, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mint", - "nodeType": "MemberAccess", - "referencedDeclaration": 1349, - "src": "6379:32:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256) external" - } - }, - "id": 904, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6379:56:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + ], + "id": 537, + "name": "FunctionCall", + "src": "3573:14:1" } - }, - "id": 905, - "nodeType": "ExpressionStatement", - "src": "6379:56:1" - } - ] - } - } - ] - }, - "documentation": null, - "id": 927, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "vaaTransfer", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 795, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 794, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 927, - "src": "5177:17:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 793, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5177:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5176:19:1" - }, - "returnParameters": { - "id": 796, - "nodeType": "ParameterList", - "parameters": [], - "src": "5204:0:1" - }, - "scope": 1254, - "src": "5156:1447:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 969, - "nodeType": "Block", - "src": "6740:808:1", - "statements": [ - { - "assignments": [941], - "declarations": [ - { - "constant": false, - "id": 941, - "mutability": "mutable", - "name": "targetBytes", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 969, - "src": "6918:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - }, - "typeName": { - "id": 940, - "name": "bytes20", - "nodeType": "ElementaryTypeName", - "src": "6918:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 946, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 944, - "name": "wrappedAssetMaster", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 359, - "src": "6948:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + ], + "id": 538, + "name": "Assignment", + "src": "3552:35:1" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 943, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6940:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes20_$", - "typeString": "type(bytes20)" - }, - "typeName": { - "id": 942, - "name": "bytes20", - "nodeType": "ElementaryTypeName", - "src": "6940:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6940:27:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } + "id": 539, + "name": "ExpressionStatement", + "src": "3552:35:1" }, - "nodeType": "VariableDeclarationStatement", - "src": "6918:49:1" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "6986:348:1", - "statements": [ + { + "children": [ { - "nodeType": "YulVariableDeclaration", - "src": "7000:24:1", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7019:4:1", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "7013:5:1" - }, - "nodeType": "YulFunctionCall", - "src": "7013:11:1" - }, - "variables": [ - { - "name": "clone", - "nodeType": "YulTypedName", - "src": "7004:5:1", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "clone", - "nodeType": "YulIdentifier", - "src": "7044:5:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7051:66:1", - "type": "", - "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7037:6:1" - }, - "nodeType": "YulFunctionCall", - "src": "7037:81:1" - }, - "nodeType": "YulExpressionStatement", - "src": "7037:81:1" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "clone", - "nodeType": "YulIdentifier", - "src": "7142:5:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7149:4:1", - "type": "", - "value": "0x14" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7138:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "7138:16:1" - }, - { - "name": "targetBytes", - "nodeType": "YulIdentifier", - "src": "7156:11:1" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7131:6:1" - }, - "nodeType": "YulFunctionCall", - "src": "7131:37:1" - }, - "nodeType": "YulExpressionStatement", - "src": "7131:37:1" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "clone", - "nodeType": "YulIdentifier", - "src": "7192:5:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7199:4:1", - "type": "", - "value": "0x28" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7188:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "7188:16:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7206:66:1", - "type": "", - "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7181:6:1" - }, - "nodeType": "YulFunctionCall", - "src": "7181:92:1" - }, - "nodeType": "YulExpressionStatement", - "src": "7181:92:1" - }, - { - "nodeType": "YulAssignment", - "src": "7286:38:1", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7303:1:1", - "type": "", - "value": "0" - }, - { - "name": "clone", - "nodeType": "YulIdentifier", - "src": "7306:5:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7313:4:1", - "type": "", - "value": "0x37" - }, - { - "name": "seed", - "nodeType": "YulIdentifier", - "src": "7319:4:1" - } - ], - "functionName": { - "name": "create2", - "nodeType": "YulIdentifier", - "src": "7295:7:1" - }, - "nodeType": "YulFunctionCall", - "src": "7295:29:1" - }, - "variableNames": [ - { - "name": "asset", - "nodeType": "YulIdentifier", - "src": "7286:5:1" - } - ] - } - ] - }, - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 938, - "isOffset": false, - "isSlot": false, - "src": "7286:5:1", - "valueSize": 1 - }, - { - "declaration": 929, - "isOffset": false, - "isSlot": false, - "src": "7319:4:1", - "valueSize": 1 - }, - { - "declaration": 941, - "isOffset": false, - "isSlot": false, - "src": "7156:11:1", - "valueSize": 1 - } - ], - "id": 947, - "nodeType": "InlineAssembly", - "src": "6977:357:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 952, - "name": "token_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 931, - "src": "7403:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 953, - "name": "token_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "7416:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 954, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 935, - "src": "7431:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 949, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 938, - "src": "7385:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 948, - "name": "WrappedAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "7372:12:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", - "typeString": "type(contract WrappedAsset)" - } - }, - "id": 950, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7372:19:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_WrappedAsset_$1811", - "typeString": "contract WrappedAsset" - } - }, - "id": 951, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "initialize", - "nodeType": "MemberAccess", - "referencedDeclaration": 1328, - "src": "7372:30:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint8_$_t_bytes32_$_t_uint8_$returns$__$", - "typeString": "function (uint8,bytes32,uint8) external" - } - }, - "id": 955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7372:68:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 956, - "nodeType": "ExpressionStatement", - "src": "7372:68:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 961, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 957, - "name": "wrappedAssets", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "7476:13:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 959, - "indexExpression": { - "argumentTypes": null, - "id": 958, - "name": "seed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "7490:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7476:19:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 960, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 938, - "src": "7498:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "7476:27:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 962, - "nodeType": "ExpressionStatement", - "src": "7476:27:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 967, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 963, - "name": "isWrappedAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "7513:14:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 965, - "indexExpression": { - "argumentTypes": null, - "id": 964, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 938, - "src": "7528:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7513:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 966, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7537:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "7513:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 968, - "nodeType": "ExpressionStatement", - "src": "7513:28:1" - } - ] - }, - "documentation": null, - "id": 970, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "deployWrappedAsset", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 936, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 929, - "mutability": "mutable", - "name": "seed", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 970, - "src": "6637:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 928, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6637:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 931, - "mutability": "mutable", - "name": "token_chain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 970, - "src": "6651:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 930, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6651:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 933, - "mutability": "mutable", - "name": "token_address", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 970, - "src": "6670:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 932, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6670:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 935, - "mutability": "mutable", - "name": "decimals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 970, - "src": "6693:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 934, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6693:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6636:72:1" - }, - "returnParameters": { - "id": 939, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 938, - "mutability": "mutable", - "name": "asset", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 970, - "src": "6726:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 937, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6726:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6725:15:1" - }, - "scope": 1254, - "src": "6609:939:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 1182, - "nodeType": "Block", - "src": "7750:1642:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 990, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "attributes": { "argumentTypes": null, - "id": 988, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "7768:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 989, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7778:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "7768:11:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "616d6f756e74206d757374206e6f742062652030", - "id": 991, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7781:22:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", - "typeString": "literal_string \"amount must not be 0\"" - }, - "value": "amount must not be 0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", - "typeString": "literal_string \"amount must not be 0\"" - } - ], - "id": 987, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "7760:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 992, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7760:44:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 993, - "nodeType": "ExpressionStatement", - "src": "7760:44:1" - }, - { - "assignments": [995], - "declarations": [ - { - "constant": false, - "id": 995, - "mutability": "mutable", - "name": "asset_chain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1182, - "src": "7815:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 994, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "7815:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 997, - "initialValue": { - "argumentTypes": null, - "id": 996, - "name": "CHAIN_ID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "7835:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7815:28:1" - }, - { - "assignments": [999], - "declarations": [ - { - "constant": false, - "id": 999, - "mutability": "mutable", - "name": "asset_address", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1182, - "src": "7853:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 998, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7853:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1000, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7853:21:1" - }, - { - "assignments": [1002], - "declarations": [ - { - "constant": false, - "id": 1002, - "mutability": "mutable", - "name": "decimals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1182, - "src": "7884:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1001, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "7884:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1008, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1004, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "7907:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1003, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2537, - "src": "7901:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$", - "typeString": "type(contract ERC20)" - } - }, - "id": 1005, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7901:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$2537", - "typeString": "contract ERC20" - } - }, - "id": 1006, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "decimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 2113, - "src": "7901:21:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", - "typeString": "function () view external returns (uint8)" - } - }, - "id": 1007, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7901:23:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7884:40:1" - }, - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1009, - "name": "isWrappedAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "7939:14:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1011, - "indexExpression": { - "argumentTypes": null, - "id": 1010, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "7954:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7939:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 1162, - "nodeType": "Block", - "src": "8161:1086:1", - "statements": [ - { - "assignments": [1039], - "declarations": [ - { - "constant": false, - "id": 1039, - "mutability": "mutable", - "name": "balanceBefore", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1162, - "src": "8175:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1038, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8175:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1049, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1046, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "8231:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Wormhole_$1254", - "typeString": "contract Wormhole" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Wormhole_$1254", - "typeString": "contract Wormhole" - } - ], - "id": 1045, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8223:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1044, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8223:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1047, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8223:13:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1041, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "8206:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1040, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2615, - "src": "8199:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 1042, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8199:13:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2615", - "typeString": "contract IERC20" - } - }, - "id": 1043, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 2554, - "src": "8199:23:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" - } - }, - "id": 1048, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", + "isStructConstructorCall": false, "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8199:38:1", + "names": [null], "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "type": "tuple()", + "type_conversion": false }, - "nodeType": "VariableDeclarationStatement", - "src": "8175:62:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1054, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "8282:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1055, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8282:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1058, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "8302:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Wormhole_$1254", - "typeString": "contract Wormhole" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Wormhole_$1254", - "typeString": "contract Wormhole" - } - ], - "id": 1057, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8294:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1056, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8294:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1059, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8294:13:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 1060, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "8309:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1051, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "8258:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1050, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2615, - "src": "8251:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 1052, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8251:13:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2615", - "typeString": "contract IERC20" - } - }, - "id": 1053, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 2674, - "src": "8251:30:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2615_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2615_$", - "typeString": "function (contract IERC20,address,address,uint256)" - } - }, - "id": 1061, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8251:65:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1062, - "nodeType": "ExpressionStatement", - "src": "8251:65:1" - }, - { - "assignments": [1064], - "declarations": [ + "children": [ { - "constant": false, - "id": 1064, - "mutability": "mutable", - "name": "balanceAfter", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1162, - "src": "8330:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1063, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8330:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1074, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1071, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "8385:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Wormhole_$1254", - "typeString": "contract Wormhole" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Wormhole_$1254", - "typeString": "contract Wormhole" - } - ], - "id": 1070, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8377:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1069, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8377:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1072, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8377:13:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1066, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "8360:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1065, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2615, - "src": "8353:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 1067, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8353:13:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2615", - "typeString": "contract IERC20" - } - }, - "id": 1068, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 2554, - "src": "8353:23:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" - } - }, - "id": 1073, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8353:38:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8330:61:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 1080, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1075, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "8596:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1078, - "name": "balanceBefore", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "8622:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { + "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", + "typeString": "literal_string \"VAA version incompatible\"" } ], - "expression": { - "argumentTypes": null, - "id": 1076, - "name": "balanceAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1064, - "src": "8605:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 540, + "name": "Identifier", + "src": "3597:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, - "id": 1077, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 1880, - "src": "8605:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } + "operator": "==", + "type": "bool" }, - "id": 1079, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8605:31:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "version", + "referencedDeclaration": 397, + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 541, + "name": "Identifier", + "src": "3605:10:1" + } + ], + "id": 542, + "name": "MemberAccess", + "src": "3605:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 543, + "name": "Literal", + "src": "3627:1:1" + } + ], + "id": 544, + "name": "BinaryOperation", + "src": "3605:23:1" }, - "src": "8596:40:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5641412076657273696f6e20696e636f6d70617469626c65", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"VAA version incompatible\"", + "value": "VAA version incompatible" + }, + "id": 545, + "name": "Literal", + "src": "3630:26:1" } - }, - "id": 1081, - "nodeType": "ExpressionStatement", - "src": "8596:40:1" - }, + ], + "id": 546, + "name": "FunctionCall", + "src": "3597:60:1" + } + ], + "id": 547, + "name": "ExpressionStatement", + "src": "3597:60:1" + }, + { + "children": [ { - "condition": { + "attributes": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 1084, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1082, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1002, - "src": "8711:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "39", - "id": 1083, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8722:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_9_by_1", - "typeString": "int_const 9" - }, - "value": "9" - }, - "src": "8711:12:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "operator": "=", + "type": "uint32" }, - "falseBody": null, - "id": 1130, - "nodeType": "IfStatement", - "src": "8707:339:1", - "trueBody": { - "id": 1129, - "nodeType": "Block", - "src": "8725:321:1", - "statements": [ - { - "assignments": [1086], - "declarations": [ + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "guardian_set_index", + "referencedDeclaration": 401, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 548, + "name": "Identifier", + "src": "3714:10:1" + } + ], + "id": 550, + "name": "MemberAccess", + "src": "3714:29:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint32", + "referencedDeclaration": 163, + "type": "function (bytes memory,uint256) pure returns (uint32)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 551, + "name": "Identifier", + "src": "3746:3:1" + } + ], + "id": 552, + "name": "MemberAccess", + "src": "3746:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 553, + "name": "Literal", + "src": "3759:1:1" + } + ], + "id": 554, + "name": "FunctionCall", + "src": "3746:15:1" + } + ], + "id": 555, + "name": "Assignment", + "src": "3714:47:1" + } + ], + "id": 556, + "name": "ExpressionStatement", + "src": "3714:47:1" + }, + { + "attributes": { + "assignments": [558] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "len_signers", + "overrides": null, + "scope": 780, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 557, + "name": "ElementaryTypeName", + "src": "3772:7:1" + } + ], + "id": 558, + "name": "VariableDeclaration", + "src": "3772:19:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ { - "constant": false, - "id": 1086, - "mutability": "mutable", - "name": "original_amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1129, - "src": "8743:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1085, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8743:7:1", - "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 559, + "name": "Identifier", + "src": "3794:3:1" + } + ], + "id": 560, + "name": "MemberAccess", + "src": "3794:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "35", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 5", + "value": "5" + }, + "id": 561, + "name": "Literal", + "src": "3806:1:1" + } + ], + "id": 562, + "name": "FunctionCall", + "src": "3794:14:1" + } + ], + "id": 563, + "name": "VariableDeclarationStatement", + "src": "3772:36:1" + }, + { + "attributes": { + "assignments": [565] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "offset", + "overrides": null, + "scope": 780, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint", + "type": "uint256" + }, + "id": 564, + "name": "ElementaryTypeName", + "src": "3818:4:1" + } + ], + "id": 565, + "name": "VariableDeclaration", + "src": "3818:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "36", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 6", + "value": "6" + }, + "id": 566, + "name": "Literal", + "src": "3832:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3636", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 66", + "value": "66" + }, + "id": 567, + "name": "Literal", + "src": "3836:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 558, + "type": "uint256", + "value": "len_signers" + }, + "id": 568, + "name": "Identifier", + "src": "3841:11:1" + } + ], + "id": 569, + "name": "BinaryOperation", + "src": "3836:16:1" + } + ], + "id": 570, + "name": "BinaryOperation", + "src": "3832:20:1" + } + ], + "id": 571, + "name": "VariableDeclarationStatement", + "src": "3818:34:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "timestamp", + "referencedDeclaration": 403, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 572, + "name": "Identifier", + "src": "3897:10:1" + } + ], + "id": 574, + "name": "MemberAccess", + "src": "3897:20:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { "typeIdentifier": "t_uint256", "typeString": "uint256" } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1088, - "initialValue": { - "argumentTypes": null, - "id": 1087, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "8769:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8743:32:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 1101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1089, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "8793:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint32", + "referencedDeclaration": 163, + "type": "function (bytes memory,uint256) pure returns (uint32)" }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 575, + "name": "Identifier", + "src": "3920:3:1" + } + ], + "id": 576, + "name": "MemberAccess", + "src": "3920:12:1" + }, + { + "attributes": { "argumentTypes": null, - "arguments": [ + "overloadedDeclarations": [null], + "referencedDeclaration": 565, + "type": "uint256", + "value": "offset" + }, + "id": 577, + "name": "Identifier", + "src": "3933:6:1" + } + ], + "id": 578, + "name": "FunctionCall", + "src": "3920:20:1" + } + ], + "id": 579, + "name": "Assignment", + "src": "3897:43:1" + } + ], + "id": 580, + "name": "ExpressionStatement", + "src": "3897:43:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "hash", + "referencedDeclaration": 399, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 581, + "name": "Identifier", + "src": "3976:10:1" + } + ], + "id": 583, + "name": "MemberAccess", + "src": "3976:15:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": -8, + "type": "function (bytes memory) pure returns (bytes32)", + "value": "keccak256" + }, + "id": 584, + "name": "Identifier", + "src": "3994:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "slice", + "referencedDeclaration": 55, + "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 585, + "name": "Identifier", + "src": "4004:3:1" + } + ], + "id": 586, + "name": "MemberAccess", + "src": "4004:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 565, + "type": "uint256", + "value": "offset" + }, + "id": 587, + "name": "Identifier", + "src": "4014:6:1" + }, + { + "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3130", - "id": 1092, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8813:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + "children": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 1097, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "attributes": { "argumentTypes": null, - "id": 1095, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1002, - "src": "8827:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 588, + "name": "Identifier", + "src": "4022:3:1" + } + ], + "id": 589, + "name": "MemberAccess", + "src": "4022:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 565, + "type": "uint256", + "value": "offset" + }, + "id": 590, + "name": "Identifier", + "src": "4035:6:1" + } + ], + "id": 591, + "name": "BinaryOperation", + "src": "4022:19:1" + } + ], + "id": 592, + "name": "FunctionCall", + "src": "4004:38:1" + } + ], + "id": 593, + "name": "FunctionCall", + "src": "3994:49:1" + } + ], + "id": 594, + "name": "Assignment", + "src": "3976:67:1" + } + ], + "id": 595, + "name": "ExpressionStatement", + "src": "3976:67:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", + "typeString": "literal_string \"VAA was already executed\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 596, + "name": "Identifier", + "src": "4053:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 420, + "type": "mapping(bytes32 => bool)", + "value": "consumedVAAs" + }, + "id": 597, + "name": "Identifier", + "src": "4062:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "hash", + "referencedDeclaration": 399, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 598, + "name": "Identifier", + "src": "4075:10:1" + } + ], + "id": 599, + "name": "MemberAccess", + "src": "4075:15:1" + } + ], + "id": 600, + "name": "IndexAccess", + "src": "4062:29:1" + } + ], + "id": 601, + "name": "UnaryOperation", + "src": "4061:30:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5641412077617320616c7265616479206578656375746564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"VAA was already executed\"", + "value": "VAA was already executed" + }, + "id": 602, + "name": "Literal", + "src": "4093:26:1" + } + ], + "id": 603, + "name": "FunctionCall", + "src": "4053:67:1" + } + ], + "id": 604, + "name": "ExpressionStatement", + "src": "4053:67:1" + }, + { + "attributes": { + "assignments": [606] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "guardian_set", + "overrides": null, + "scope": 780, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct Wormhole.GuardianSet", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "GuardianSet", + "referencedDeclaration": 371, + "type": "struct Wormhole.GuardianSet" + }, + "id": 605, + "name": "UserDefinedTypeName", + "src": "4131:11:1" + } + ], + "id": 606, + "name": "VariableDeclaration", + "src": "4131:31:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct Wormhole.GuardianSet storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 412, + "type": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)", + "value": "guardian_sets" + }, + "id": 607, + "name": "Identifier", + "src": "4165:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "guardian_set_index", + "referencedDeclaration": 401, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 608, + "name": "Identifier", + "src": "4179:10:1" + } + ], + "id": 609, + "name": "MemberAccess", + "src": "4179:29:1" + } + ], + "id": 610, + "name": "IndexAccess", + "src": "4165:44:1" + } + ], + "id": 611, + "name": "VariableDeclarationStatement", + "src": "4131:78:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ef4d0f2354b2279f26c4ba4477a0c338dcdd31fbb9caa6ef52ec7856b55556f3", + "typeString": "literal_string \"invalid guardian set\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 612, + "name": "Identifier", + "src": "4219:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "keys", + "referencedDeclaration": 368, + "type": "address[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 606, + "type": "struct Wormhole.GuardianSet memory", + "value": "guardian_set" + }, + "id": 613, + "name": "Identifier", + "src": "4227:12:1" + } + ], + "id": 614, + "name": "MemberAccess", + "src": "4227:17:1" + } + ], + "id": 615, + "name": "MemberAccess", + "src": "4227:24:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 616, + "name": "Literal", + "src": "4254:1:1" + } + ], + "id": 617, + "name": "BinaryOperation", + "src": "4227:28:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "696e76616c696420677561726469616e20736574", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"invalid guardian set\"", + "value": "invalid guardian set" + }, + "id": 618, + "name": "Literal", + "src": "4257:22:1" + } + ], + "id": 619, + "name": "FunctionCall", + "src": "4219:61:1" + } + ], + "id": 620, + "name": "ExpressionStatement", + "src": "4219:61:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", + "typeString": "literal_string \"guardian set has expired\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 621, + "name": "Identifier", + "src": "4290:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "expiration_time", + "referencedDeclaration": 370, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 606, + "type": "struct Wormhole.GuardianSet memory", + "value": "guardian_set" + }, + "id": 622, + "name": "Identifier", + "src": "4298:12:1" + } + ], + "id": 623, + "name": "MemberAccess", + "src": "4298:28:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 624, + "name": "Literal", + "src": "4330:1:1" + } + ], + "id": 625, + "name": "BinaryOperation", + "src": "4298:33:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "expiration_time", + "referencedDeclaration": 370, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 606, + "type": "struct Wormhole.GuardianSet memory", + "value": "guardian_set" + }, + "id": 626, + "name": "Identifier", + "src": "4335:12:1" + } + ], + "id": 627, + "name": "MemberAccess", + "src": "4335:28:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -4, + "type": "block", + "value": "block" + }, + "id": 628, + "name": "Identifier", + "src": "4366:5:1" + } + ], + "id": 629, + "name": "MemberAccess", + "src": "4366:15:1" + } + ], + "id": 630, + "name": "BinaryOperation", + "src": "4335:46:1" + } + ], + "id": 631, + "name": "BinaryOperation", + "src": "4298:83:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "677561726469616e20736574206861732065787069726564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"guardian set has expired\"", + "value": "guardian set has expired" + }, + "id": 632, + "name": "Literal", + "src": "4383:26:1" + } + ], + "id": 633, + "name": "FunctionCall", + "src": "4290:120:1" + } + ], + "id": 634, + "name": "ExpressionStatement", + "src": "4290:120:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", + "typeString": "literal_string \"no quorum\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 635, + "name": "Identifier", + "src": "4517:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "keys", + "referencedDeclaration": 368, + "type": "address[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 606, + "type": "struct Wormhole.GuardianSet memory", + "value": "guardian_set" + }, + "id": 636, + "name": "Identifier", + "src": "4527:12:1" + } + ], + "id": 637, + "name": "MemberAccess", + "src": "4527:17:1" + } + ], + "id": 638, + "name": "MemberAccess", + "src": "4527:24:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 639, + "name": "Literal", + "src": "4554:2:1" + } + ], + "id": 640, + "name": "BinaryOperation", + "src": "4527:29:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "33", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 3", + "value": "3" + }, + "id": 641, + "name": "Literal", + "src": "4559:1:1" + } + ], + "id": 642, + "name": "BinaryOperation", + "src": "4527:33:1" + } + ], + "id": 643, + "name": "TupleExpression", + "src": "4526:35:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "32", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 2", + "value": "2" + }, + "id": 644, + "name": "Literal", + "src": "4564:1:1" } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { + ], + "id": 645, + "name": "BinaryOperation", + "src": "4526:39:1" + } + ], + "id": 646, + "name": "TupleExpression", + "src": "4525:41:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 647, + "name": "Literal", + "src": "4569:2:1" + } + ], + "id": 648, + "name": "BinaryOperation", + "src": "4525:46:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 649, + "name": "Literal", + "src": "4574:1:1" + } + ], + "id": 650, + "name": "BinaryOperation", + "src": "4525:50:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 558, + "type": "uint256", + "value": "len_signers" + }, + "id": 651, + "name": "Identifier", + "src": "4579:11:1" + } + ], + "id": 652, + "name": "BinaryOperation", + "src": "4525:65:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "6e6f2071756f72756d", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"no quorum\"", + "value": "no quorum" + }, + "id": 653, + "name": "Literal", + "src": "4592:11:1" + } + ], + "id": 654, + "name": "FunctionCall", + "src": "4517:87:1" + } + ], + "id": 655, + "name": "ExpressionStatement", + "src": "4517:87:1" + }, + { + "attributes": { + "assignments": [657] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "last_index", + "overrides": null, + "scope": 780, + "stateVariable": false, + "storageLocation": "default", + "type": "int16", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "int16", + "type": "int16" + }, + "id": 656, + "name": "ElementaryTypeName", + "src": "4615:5:1" + } + ], + "id": 657, + "name": "VariableDeclaration", + "src": "4615:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "operator": "-", + "prefix": true, + "type": "int_const -1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 658, + "name": "Literal", + "src": "4636:1:1" + } + ], + "id": 659, + "name": "UnaryOperation", + "src": "4634:3:1" + } + ], + "id": 660, + "name": "VariableDeclarationStatement", + "src": "4615:22:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [662] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "i", + "overrides": null, + "scope": 750, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint", + "type": "uint256" + }, + "id": 661, + "name": "ElementaryTypeName", + "src": "4652:4:1" + } + ], + "id": 662, + "name": "VariableDeclaration", + "src": "4652:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 663, + "name": "Literal", + "src": "4661:1:1" + } + ], + "id": 664, + "name": "VariableDeclarationStatement", + "src": "4652:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 662, + "type": "uint256", + "value": "i" + }, + "id": 665, + "name": "Identifier", + "src": "4664:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 558, + "type": "uint256", + "value": "len_signers" + }, + "id": 666, + "name": "Identifier", + "src": "4668:11:1" + } + ], + "id": 667, + "name": "BinaryOperation", + "src": "4664:15:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "++", + "prefix": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 662, + "type": "uint256", + "value": "i" + }, + "id": 668, + "name": "Identifier", + "src": "4681:1:1" + } + ], + "id": 669, + "name": "UnaryOperation", + "src": "4681:3:1" + } + ], + "id": 670, + "name": "ExpressionStatement", + "src": "4681:3:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [672] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "index", + "overrides": null, + "scope": 749, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 671, + "name": "ElementaryTypeName", + "src": "4700:5:1" + } + ], + "id": 672, + "name": "VariableDeclaration", + "src": "4700:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 673, + "name": "Identifier", + "src": "4714:3:1" + } + ], + "id": 674, + "name": "MemberAccess", + "src": "4714:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "36", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 6", + "value": "6" + }, + "id": 675, + "name": "Literal", + "src": "4726:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { "argumentTypes": null, - "hexValue": "39", - "id": 1096, + "overloadedDeclarations": [null], + "referencedDeclaration": 662, + "type": "uint256", + "value": "i" + }, + "id": 676, + "name": "Identifier", + "src": "4730:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3636", "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", "lValueRequested": false, - "nodeType": "Literal", - "src": "8838:1:1", "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_9_by_1", - "typeString": "int_const 9" - }, - "value": "9" + "token": "number", + "type": "int_const 66", + "value": "66" }, - "src": "8827:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } + "id": 677, + "name": "Literal", + "src": "4734:2:1" } ], - "expression": { + "id": 678, + "name": "BinaryOperation", + "src": "4730:6:1" + } + ], + "id": 679, + "name": "BinaryOperation", + "src": "4726:10:1" + } + ], + "id": 680, + "name": "FunctionCall", + "src": "4714:23:1" + } + ], + "id": 681, + "name": "VariableDeclarationStatement", + "src": "4700:37:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_de9ff8e5647eeed7691d313f96ed0065761ad2da429d76b3b7868b564890def8", + "typeString": "literal_string \"signature indices must be ascending\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 682, + "name": "Identifier", + "src": "4751:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int16", + "typeString": "int16" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 672, + "type": "uint8", + "value": "index" + }, + "id": 683, + "name": "Identifier", + "src": "4759:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 657, + "type": "int16", + "value": "last_index" + }, + "id": 684, + "name": "Identifier", + "src": "4767:10:1" + } + ], + "id": 685, + "name": "BinaryOperation", + "src": "4759:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "7369676e617475726520696e6469636573206d75737420626520617363656e64696e67", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"signature indices must be ascending\"", + "value": "signature indices must be ascending" + }, + "id": 686, + "name": "Literal", + "src": "4779:37:1" + } + ], + "id": 687, + "name": "FunctionCall", + "src": "4751:66:1" + } + ], + "id": 688, + "name": "ExpressionStatement", + "src": "4751:66:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "int16" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 657, + "type": "int16", + "value": "last_index" + }, + "id": 689, + "name": "Identifier", + "src": "4831:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "int16", + "type_conversion": true + }, + "children": [ + { + "attributes": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], - "id": 1094, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8819:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1093, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8819:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } + "type": "type(int16)" }, - "id": 1098, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8819:21:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "children": [ + { + "attributes": { + "name": "int16", + "type": null + }, + "id": 690, + "name": "ElementaryTypeName", + "src": "4844:5:1" + } + ], + "id": 691, + "name": "ElementaryTypeNameExpression", + "src": "4844:5:1" }, - "src": "8813:27:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 672, + "type": "uint8", + "value": "index" + }, + "id": 692, + "name": "Identifier", + "src": "4850:5:1" } ], - "expression": { - "argumentTypes": null, - "id": 1090, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "8802:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "id": 693, + "name": "FunctionCall", + "src": "4844:12:1" + } + ], + "id": 694, + "name": "Assignment", + "src": "4831:25:1" + } + ], + "id": 695, + "name": "ExpressionStatement", + "src": "4831:25:1" + }, + { + "attributes": { + "assignments": [697] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "r", + "overrides": null, + "scope": 749, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" }, - "id": 1091, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "div", - "nodeType": "MemberAccess", - "referencedDeclaration": 1960, - "src": "8802:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 1100, + "id": 696, + "name": "ElementaryTypeName", + "src": "4871:7:1" + } + ], + "id": 697, + "name": "VariableDeclaration", + "src": "4871:9:1" + }, + { + "attributes": { + "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", + "isStructConstructorCall": false, "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8802:39:1", + "names": [null], "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "type": "bytes32", + "type_conversion": false }, - "src": "8793:48:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1102, - "nodeType": "ExpressionStatement", - "src": "8793:48:1" - }, - { - "condition": { - "argumentTypes": null, - "id": 1103, - "name": "refund_dust", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 982, - "src": "8864:11:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1124, - "nodeType": "IfStatement", - "src": "8860:141:1", - "trueBody": { - "id": 1123, - "nodeType": "Block", - "src": "8877:124:1", - "statements": [ + "children": [ { - "expression": { - "argumentTypes": null, - "arguments": [ + "attributes": { + "argumentTypes": [ { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toBytes32", + "referencedDeclaration": 298, + "type": "function (bytes memory,uint256) pure returns (bytes32)" + }, + "children": [ + { + "attributes": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1108, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "8921:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 698, + "name": "Identifier", + "src": "4883:3:1" + } + ], + "id": 699, + "name": "MemberAccess", + "src": "4883:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "37", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 7", + "value": "7" + }, + "id": 700, + "name": "Literal", + "src": "4897:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8921:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 662, + "type": "uint256", + "value": "i" + }, + "id": 701, + "name": "Identifier", + "src": "4901:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3636", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 66", + "value": "66" + }, + "id": 702, + "name": "Literal", + "src": "4905:2:1" } + ], + "id": 703, + "name": "BinaryOperation", + "src": "4901:6:1" + } + ], + "id": 704, + "name": "BinaryOperation", + "src": "4897:10:1" + } + ], + "id": 705, + "name": "FunctionCall", + "src": "4883:25:1" + } + ], + "id": 706, + "name": "VariableDeclarationStatement", + "src": "4871:37:1" + }, + { + "attributes": { + "assignments": [708] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "s", + "overrides": null, + "scope": 749, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 707, + "name": "ElementaryTypeName", + "src": "4922:7:1" + } + ], + "id": 708, + "name": "VariableDeclaration", + "src": "4922:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toBytes32", + "referencedDeclaration": 298, + "type": "function (bytes memory,uint256) pure returns (bytes32)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 709, + "name": "Identifier", + "src": "4934:3:1" + } + ], + "id": 710, + "name": "MemberAccess", + "src": "4934:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3339", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 39", + "value": "39" + }, + "id": 711, + "name": "Literal", + "src": "4948:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 662, + "type": "uint256", + "value": "i" + }, + "id": 712, + "name": "Identifier", + "src": "4953:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3636", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 66", + "value": "66" + }, + "id": 713, + "name": "Literal", + "src": "4957:2:1" + } + ], + "id": 714, + "name": "BinaryOperation", + "src": "4953:6:1" + } + ], + "id": 715, + "name": "BinaryOperation", + "src": "4948:11:1" + } + ], + "id": 716, + "name": "FunctionCall", + "src": "4934:26:1" + } + ], + "id": 717, + "name": "VariableDeclarationStatement", + "src": "4922:38:1" + }, + { + "attributes": { + "assignments": [719] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "v", + "overrides": null, + "scope": 749, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 718, + "name": "ElementaryTypeName", + "src": "4974:5:1" + } + ], + "id": 719, + "name": "VariableDeclaration", + "src": "4974:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 720, + "name": "Identifier", + "src": "4984:3:1" + } + ], + "id": 721, + "name": "MemberAccess", + "src": "4984:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3731", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 71", + "value": "71" + }, + "id": 722, + "name": "Literal", + "src": "4996:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 662, + "type": "uint256", + "value": "i" + }, + "id": 723, + "name": "Identifier", + "src": "5001:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3636", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 66", + "value": "66" + }, + "id": 724, + "name": "Literal", + "src": "5005:2:1" + } + ], + "id": 725, + "name": "BinaryOperation", + "src": "5001:6:1" + } + ], + "id": 726, + "name": "BinaryOperation", + "src": "4996:11:1" + } + ], + "id": 727, + "name": "FunctionCall", + "src": "4984:24:1" + } + ], + "id": 728, + "name": "VariableDeclarationStatement", + "src": "4974:34:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 719, + "type": "uint8", + "value": "v" + }, + "id": 729, + "name": "Identifier", + "src": "5022:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3237", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 27", + "value": "27" + }, + "id": 730, + "name": "Literal", + "src": "5027:2:1" + } + ], + "id": 731, + "name": "Assignment", + "src": "5022:7:1" + } + ], + "id": 732, + "name": "ExpressionStatement", + "src": "5022:7:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" }, { + "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", + "typeString": "literal_string \"VAA signature invalid\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 733, + "name": "Identifier", + "src": "5043:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { "argumentTypes": null, - "arguments": [ + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": -6, + "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)", + "value": "ecrecover" + }, + "id": 734, + "name": "Identifier", + "src": "5051:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "hash", + "referencedDeclaration": 399, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 735, + "name": "Identifier", + "src": "5061:10:1" + } + ], + "id": 736, + "name": "MemberAccess", + "src": "5061:15:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 719, + "type": "uint8", + "value": "v" + }, + "id": 737, + "name": "Identifier", + "src": "5078:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 697, + "type": "bytes32", + "value": "r" + }, + "id": 738, + "name": "Identifier", + "src": "5081:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 708, + "type": "bytes32", + "value": "s" + }, + "id": 739, + "name": "Identifier", + "src": "5084:1:1" + } + ], + "id": 740, + "name": "FunctionCall", + "src": "5051:35:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "keys", + "referencedDeclaration": 368, + "type": "address[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 606, + "type": "struct Wormhole.GuardianSet memory", + "value": "guardian_set" + }, + "id": 741, + "name": "Identifier", + "src": "5090:12:1" + } + ], + "id": 742, + "name": "MemberAccess", + "src": "5090:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 672, + "type": "uint8", + "value": "index" + }, + "id": 743, + "name": "Identifier", + "src": "5108:5:1" + } + ], + "id": 744, + "name": "IndexAccess", + "src": "5090:24:1" + } + ], + "id": 745, + "name": "BinaryOperation", + "src": "5051:63:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "564141207369676e617475726520696e76616c6964", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"VAA signature invalid\"", + "value": "VAA signature invalid" + }, + "id": 746, + "name": "Literal", + "src": "5116:23:1" + } + ], + "id": 747, + "name": "FunctionCall", + "src": "5043:97:1" + } + ], + "id": 748, + "name": "ExpressionStatement", + "src": "5043:97:1" + } + ], + "id": 749, + "name": "Block", + "src": "4686:465:1" + } + ], + "id": 750, + "name": "ForStatement", + "src": "4647:504:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "action", + "referencedDeclaration": 405, + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 751, + "name": "Identifier", + "src": "5161:10:1" + } + ], + "id": 753, + "name": "MemberAccess", + "src": "5161:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 754, + "name": "Identifier", + "src": "5181:3:1" + } + ], + "id": 755, + "name": "MemberAccess", + "src": "5181:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 565, + "type": "uint256", + "value": "offset" + }, + "id": 756, + "name": "Identifier", + "src": "5193:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "34", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 4", + "value": "4" + }, + "id": 757, + "name": "Literal", + "src": "5202:1:1" + } + ], + "id": 758, + "name": "BinaryOperation", + "src": "5193:10:1" + } + ], + "id": 759, + "name": "FunctionCall", + "src": "5181:23:1" + } + ], + "id": 760, + "name": "Assignment", + "src": "5161:43:1" + } + ], + "id": 761, + "name": "ExpressionStatement", + "src": "5161:43:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "payload", + "referencedDeclaration": 407, + "type": "bytes memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 529, + "type": "struct Wormhole.ParsedVAA memory", + "value": "parsed_vaa" + }, + "id": 762, + "name": "Identifier", + "src": "5214:10:1" + } + ], + "id": 764, + "name": "MemberAccess", + "src": "5214:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "slice", + "referencedDeclaration": 55, + "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 765, + "name": "Identifier", + "src": "5235:3:1" + } + ], + "id": 766, + "name": "MemberAccess", + "src": "5235:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 565, + "type": "uint256", + "value": "offset" + }, + "id": 767, + "name": "Identifier", + "src": "5245:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "35", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 5", + "value": "5" + }, + "id": 768, + "name": "Literal", + "src": "5254:1:1" + } + ], + "id": 769, + "name": "BinaryOperation", + "src": "5245:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 526, + "type": "bytes calldata", + "value": "vaa" + }, + "id": 770, + "name": "Identifier", + "src": "5257:3:1" + } + ], + "id": 771, + "name": "MemberAccess", + "src": "5257:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 565, + "type": "uint256", + "value": "offset" + }, + "id": 772, + "name": "Identifier", + "src": "5271:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "35", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 5", + "value": "5" + }, + "id": 773, + "name": "Literal", + "src": "5280:1:1" + } + ], + "id": 774, + "name": "BinaryOperation", + "src": "5271:10:1" + } + ], + "id": 775, + "name": "TupleExpression", + "src": "5270:12:1" + } + ], + "id": 776, + "name": "BinaryOperation", + "src": "5257:25:1" + } + ], + "id": 777, + "name": "FunctionCall", + "src": "5235:48:1" + } + ], + "id": 778, + "name": "Assignment", + "src": "5214:69:1" + } + ], + "id": 779, + "name": "ExpressionStatement", + "src": "5214:69:1" + } + ], + "id": 780, + "name": "Block", + "src": "3542:1748:1" + } + ], + "id": 781, + "name": "FunctionDefinition", + "src": "3445:1845:1" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "vaaUpdateGuardianSet", + "overrides": null, + "scope": 1420, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 889, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 782, + "name": "ElementaryTypeName", + "src": "5326:5:1" + } + ], + "id": 783, + "name": "VariableDeclaration", + "src": "5326:17:1" + } + ], + "id": 784, + "name": "ParameterList", + "src": "5325:19:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 785, + "name": "ParameterList", + "src": "5353:0:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [787] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "new_guardian_set_index", + "overrides": null, + "scope": 888, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 786, + "name": "ElementaryTypeName", + "src": "5363:6:1" + } + ], + "id": 787, + "name": "VariableDeclaration", + "src": "5363:29:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint32", + "referencedDeclaration": 163, + "type": "function (bytes memory,uint256) pure returns (uint32)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 783, + "type": "bytes memory", + "value": "data" + }, + "id": 788, + "name": "Identifier", + "src": "5395:4:1" + } + ], + "id": 789, + "name": "MemberAccess", + "src": "5395:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 790, + "name": "Literal", + "src": "5409:1:1" + } + ], + "id": 791, + "name": "FunctionCall", + "src": "5395:16:1" + } + ], + "id": 792, + "name": "VariableDeclarationStatement", + "src": "5363:48:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a9c35350c4790f34190b54478b12348e0cbd9c4c717b5d4a6ca5709d71c4f33d", + "typeString": "literal_string \"index must increase in steps of 1\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 793, + "name": "Identifier", + "src": "5421:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 787, + "type": "uint32", + "value": "new_guardian_set_index" + }, + "id": 794, + "name": "Identifier", + "src": "5429:22:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" + }, + "id": 795, + "name": "Identifier", + "src": "5455:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 796, + "name": "Literal", + "src": "5476:1:1" + } + ], + "id": 797, + "name": "BinaryOperation", + "src": "5455:22:1" + } + ], + "id": 798, + "name": "BinaryOperation", + "src": "5429:48:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "696e646578206d75737420696e63726561736520696e207374657073206f662031", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"index must increase in steps of 1\"", + "value": "index must increase in steps of 1" + }, + "id": 799, + "name": "Literal", + "src": "5479:35:1" + } + ], + "id": 800, + "name": "FunctionCall", + "src": "5421:94:1" + } + ], + "id": 801, + "name": "ExpressionStatement", + "src": "5421:94:1" + }, + { + "attributes": { + "assignments": [803] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "len", + "overrides": null, + "scope": 888, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 802, + "name": "ElementaryTypeName", + "src": "5525:5:1" + } + ], + "id": 803, + "name": "VariableDeclaration", + "src": "5525:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 783, + "type": "bytes memory", + "value": "data" + }, + "id": 804, + "name": "Identifier", + "src": "5537:4:1" + } + ], + "id": 805, + "name": "MemberAccess", + "src": "5537:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "34", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 4", + "value": "4" + }, + "id": 806, + "name": "Literal", + "src": "5550:1:1" + } + ], + "id": 807, + "name": "FunctionCall", + "src": "5537:15:1" + } + ], + "id": 808, + "name": "VariableDeclarationStatement", + "src": "5525:27:1" + }, + { + "attributes": { + "assignments": [813] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "new_guardians", + "overrides": null, + "scope": 888, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 811, + "name": "ElementaryTypeName", + "src": "5563:7:1" + } + ], + "id": 812, + "name": "ArrayTypeName", + "src": "5563:9:1" + } + ], + "id": 813, + "name": "VariableDeclaration", + "src": "5563:30:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address[] memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "function (uint256) pure returns (address[] memory)" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 814, + "name": "ElementaryTypeName", + "src": "5600:7:1" + } + ], + "id": 815, + "name": "ArrayTypeName", + "src": "5600:9:1" + } + ], + "id": 816, + "name": "NewExpression", + "src": "5596:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 803, + "type": "uint8", + "value": "len" + }, + "id": 817, + "name": "Identifier", + "src": "5610:3:1" + } + ], + "id": 818, + "name": "FunctionCall", + "src": "5596:18:1" + } + ], + "id": 819, + "name": "VariableDeclarationStatement", + "src": "5563:51:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [821] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "i", + "overrides": null, + "scope": 848, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint", + "type": "uint256" + }, + "id": 820, + "name": "ElementaryTypeName", + "src": "5629:4:1" + } + ], + "id": 821, + "name": "VariableDeclaration", + "src": "5629:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 822, + "name": "Literal", + "src": "5638:1:1" + } + ], + "id": 823, + "name": "VariableDeclarationStatement", + "src": "5629:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 821, + "type": "uint256", + "value": "i" + }, + "id": 824, + "name": "Identifier", + "src": "5641:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 803, + "type": "uint8", + "value": "len" + }, + "id": 825, + "name": "Identifier", + "src": "5645:3:1" + } + ], + "id": 826, + "name": "BinaryOperation", + "src": "5641:7:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "++", + "prefix": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 821, + "type": "uint256", + "value": "i" + }, + "id": 827, + "name": "Identifier", + "src": "5650:1:1" + } + ], + "id": 828, + "name": "UnaryOperation", + "src": "5650:3:1" + } + ], + "id": 829, + "name": "ExpressionStatement", + "src": "5650:3:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [831] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "addr", + "overrides": null, + "scope": 847, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 830, + "name": "ElementaryTypeName", + "src": "5669:7:1" + } + ], + "id": 831, + "name": "VariableDeclaration", + "src": "5669:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toAddress", + "referencedDeclaration": 82, + "type": "function (bytes memory,uint256) pure returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 783, + "type": "bytes memory", + "value": "data" + }, + "id": 832, + "name": "Identifier", + "src": "5684:4:1" + } + ], + "id": 833, + "name": "MemberAccess", + "src": "5684:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "35", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 5", + "value": "5" + }, + "id": 834, + "name": "Literal", + "src": "5699:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 821, + "type": "uint256", + "value": "i" + }, + "id": 835, + "name": "Identifier", + "src": "5703:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3230", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 20", + "value": "20" + }, + "id": 836, + "name": "Literal", + "src": "5707:2:1" + } + ], + "id": 837, + "name": "BinaryOperation", + "src": "5703:6:1" + } + ], + "id": 838, + "name": "BinaryOperation", + "src": "5699:10:1" + } + ], + "id": 839, + "name": "FunctionCall", + "src": "5684:26:1" + } + ], + "id": 840, + "name": "VariableDeclarationStatement", + "src": "5669:41:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 813, + "type": "address[] memory", + "value": "new_guardians" + }, + "id": 841, + "name": "Identifier", + "src": "5724:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 821, + "type": "uint256", + "value": "i" + }, + "id": 842, + "name": "Identifier", + "src": "5738:1:1" + } + ], + "id": 843, + "name": "IndexAccess", + "src": "5724:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 831, + "type": "address", + "value": "addr" + }, + "id": 844, + "name": "Identifier", + "src": "5743:4:1" + } + ], + "id": 845, + "name": "Assignment", + "src": "5724:23:1" + } + ], + "id": 846, + "name": "ExpressionStatement", + "src": "5724:23:1" + } + ], + "id": 847, + "name": "Block", + "src": "5655:103:1" + } + ], + "id": 848, + "name": "ForStatement", + "src": "5624:134:1" + }, + { + "attributes": { + "assignments": [850] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "old_guardian_set_index", + "overrides": null, + "scope": 888, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 849, + "name": "ElementaryTypeName", + "src": "5768:6:1" + } + ], + "id": 850, + "name": "VariableDeclaration", + "src": "5768:29:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" + }, + "id": 851, + "name": "Identifier", + "src": "5800:18:1" + } + ], + "id": 852, + "name": "VariableDeclarationStatement", + "src": "5768:50:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" + }, + "id": 853, + "name": "Identifier", + "src": "5828:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 787, + "type": "uint32", + "value": "new_guardian_set_index" + }, + "id": 854, + "name": "Identifier", + "src": "5849:22:1" + } + ], + "id": 855, + "name": "Assignment", + "src": "5828:43:1" + } + ], + "id": 856, + "name": "ExpressionStatement", + "src": "5828:43:1" + }, + { + "attributes": { + "assignments": [858] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "new_guardian_set", + "overrides": null, + "scope": 888, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct Wormhole.GuardianSet", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "GuardianSet", + "referencedDeclaration": 371, + "type": "struct Wormhole.GuardianSet" + }, + "id": 857, + "name": "UserDefinedTypeName", + "src": "5882:11:1" + } + ], + "id": 858, + "name": "VariableDeclaration", + "src": "5882:35:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": true, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "struct Wormhole.GuardianSet memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 371, + "type": "type(struct Wormhole.GuardianSet storage pointer)", + "value": "GuardianSet" + }, + "id": 859, + "name": "Identifier", + "src": "5920:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 813, + "type": "address[] memory", + "value": "new_guardians" + }, + "id": 860, + "name": "Identifier", + "src": "5932:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 861, + "name": "Literal", + "src": "5947:1:1" + } + ], + "id": 862, + "name": "FunctionCall", + "src": "5920:29:1" + } + ], + "id": 863, + "name": "VariableDeclarationStatement", + "src": "5882:67:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "struct Wormhole.GuardianSet storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "struct Wormhole.GuardianSet storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 412, + "type": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)", + "value": "guardian_sets" + }, + "id": 864, + "name": "Identifier", + "src": "5959:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" + }, + "id": 865, + "name": "Identifier", + "src": "5973:18:1" + } + ], + "id": 866, + "name": "IndexAccess", + "src": "5959:33:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 858, + "type": "struct Wormhole.GuardianSet memory", + "value": "new_guardian_set" + }, + "id": 867, + "name": "Identifier", + "src": "5995:16:1" + } + ], + "id": 868, + "name": "Assignment", + "src": "5959:52:1" + } + ], + "id": 869, + "name": "ExpressionStatement", + "src": "5959:52:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "expiration_time", + "referencedDeclaration": 370, + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct Wormhole.GuardianSet storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 412, + "type": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)", + "value": "guardian_sets" + }, + "id": 870, + "name": "Identifier", + "src": "6021:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 850, + "type": "uint32", + "value": "old_guardian_set_index" + }, + "id": 871, + "name": "Identifier", + "src": "6035:22:1" + } + ], + "id": 872, + "name": "IndexAccess", + "src": "6021:37:1" + } + ], + "id": 873, + "name": "MemberAccess", + "src": "6021:53:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint32", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint32)" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": null + }, + "id": 874, + "name": "ElementaryTypeName", + "src": "6077:6:1" + } + ], + "id": 875, + "name": "ElementaryTypeNameExpression", + "src": "6077:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -4, + "type": "block", + "value": "block" + }, + "id": 876, + "name": "Identifier", + "src": "6084:5:1" + } + ], + "id": 877, + "name": "MemberAccess", + "src": "6084:15:1" + } + ], + "id": 878, + "name": "FunctionCall", + "src": "6077:23:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 416, + "type": "uint32", + "value": "guardian_set_expirity" + }, + "id": 879, + "name": "Identifier", + "src": "6103:21:1" + } + ], + "id": 880, + "name": "BinaryOperation", + "src": "6077:47:1" + } + ], + "id": 881, + "name": "Assignment", + "src": "6021:103:1" + } + ], + "id": 882, + "name": "ExpressionStatement", + "src": "6021:103:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 377, + "type": "function (uint32,uint32)", + "value": "LogGuardianSetChanged" + }, + "id": 883, + "name": "Identifier", + "src": "6140:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 850, + "type": "uint32", + "value": "old_guardian_set_index" + }, + "id": 884, + "name": "Identifier", + "src": "6162:22:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 414, + "type": "uint32", + "value": "guardian_set_index" + }, + "id": 885, + "name": "Identifier", + "src": "6186:18:1" + } + ], + "id": 886, + "name": "FunctionCall", + "src": "6140:65:1" + } + ], + "id": 887, + "name": "EmitStatement", + "src": "6135:70:1" + } + ], + "id": 888, + "name": "Block", + "src": "5353:859:1" + } + ], + "id": 889, + "name": "FunctionDefinition", + "src": "5296:916:1" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "vaaTransfer", + "overrides": null, + "scope": 1420, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 1051, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 890, + "name": "ElementaryTypeName", + "src": "6239:5:1" + } + ], + "id": 891, + "name": "VariableDeclaration", + "src": "6239:17:1" + } + ], + "id": 892, + "name": "ParameterList", + "src": "6238:19:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 893, + "name": "ParameterList", + "src": "6266:0:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [895] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "source_chain", + "overrides": null, + "scope": 1050, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 894, + "name": "ElementaryTypeName", + "src": "6319:5:1" + } + ], + "id": 895, + "name": "VariableDeclaration", + "src": "6319:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 896, + "name": "Identifier", + "src": "6340:4:1" + } + ], + "id": 897, + "name": "MemberAccess", + "src": "6340:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "34", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 4", + "value": "4" + }, + "id": 898, + "name": "Literal", + "src": "6353:1:1" + } + ], + "id": 899, + "name": "FunctionCall", + "src": "6340:15:1" + } + ], + "id": 900, + "name": "VariableDeclarationStatement", + "src": "6319:36:1" + }, + { + "attributes": { + "assignments": [902] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target_chain", + "overrides": null, + "scope": 1050, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 901, + "name": "ElementaryTypeName", + "src": "6366:5:1" + } + ], + "id": 902, + "name": "VariableDeclaration", + "src": "6366:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 903, + "name": "Identifier", + "src": "6387:4:1" + } + ], + "id": 904, + "name": "MemberAccess", + "src": "6387:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "35", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 5", + "value": "5" + }, + "id": 905, + "name": "Literal", + "src": "6400:1:1" + } + ], + "id": 906, + "name": "FunctionCall", + "src": "6387:15:1" + } + ], + "id": 907, + "name": "VariableDeclarationStatement", + "src": "6366:36:1" + }, + { + "attributes": { + "assignments": [909] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target_address", + "overrides": null, + "scope": 1050, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 908, + "name": "ElementaryTypeName", + "src": "6521:7:1" + } + ], + "id": 909, + "name": "VariableDeclaration", + "src": "6521:22:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_50_by_1", + "typeString": "int_const 50" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toAddress", + "referencedDeclaration": 82, + "type": "function (bytes memory,uint256) pure returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 910, + "name": "Identifier", + "src": "6546:4:1" + } + ], + "id": 911, + "name": "MemberAccess", + "src": "6546:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_50_by_1", + "typeString": "int_const 50" + }, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "operator": "+", + "type": "int_const 50" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3338", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 38", + "value": "38" + }, + "id": 912, + "name": "Literal", + "src": "6561:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3132", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 12", + "value": "12" + }, + "id": 913, + "name": "Literal", + "src": "6566:2:1" + } + ], + "id": 914, + "name": "BinaryOperation", + "src": "6561:7:1" + } + ], + "id": 915, + "name": "FunctionCall", + "src": "6546:23:1" + } + ], + "id": 916, + "name": "VariableDeclarationStatement", + "src": "6521:48:1" + }, + { + "attributes": { + "assignments": [918] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token_chain", + "overrides": null, + "scope": 1050, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 917, + "name": "ElementaryTypeName", + "src": "6580:5:1" + } + ], + "id": 918, + "name": "VariableDeclaration", + "src": "6580:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_70_by_1", + "typeString": "int_const 70" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 919, + "name": "Identifier", + "src": "6600:4:1" + } + ], + "id": 920, + "name": "MemberAccess", + "src": "6600:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3730", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 70", + "value": "70" + }, + "id": 921, + "name": "Literal", + "src": "6613:2:1" + } + ], + "id": 922, + "name": "FunctionCall", + "src": "6600:16:1" + } + ], + "id": 923, + "name": "VariableDeclarationStatement", + "src": "6580:36:1" + }, + { + "attributes": { + "assignments": [925] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 1050, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 924, + "name": "ElementaryTypeName", + "src": "6680:7:1" + } + ], + "id": 925, + "name": "VariableDeclaration", + "src": "6680:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_104_by_1", + "typeString": "int_const 104" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint256", + "referencedDeclaration": 271, + "type": "function (bytes memory,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 926, + "name": "Identifier", + "src": "6697:4:1" + } + ], + "id": 927, + "name": "MemberAccess", + "src": "6697:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "313034", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 104", + "value": "104" + }, + "id": 928, + "name": "Literal", + "src": "6712:3:1" + } + ], + "id": 929, + "name": "FunctionCall", + "src": "6697:19:1" + } + ], + "id": 930, + "name": "VariableDeclarationStatement", + "src": "6680:36:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", + "typeString": "literal_string \"same chain transfers are not supported\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 931, + "name": "Identifier", + "src": "6727:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 895, + "type": "uint8", + "value": "source_chain" + }, + "id": 932, + "name": "Identifier", + "src": "6735:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 902, + "type": "uint8", + "value": "target_chain" + }, + "id": 933, + "name": "Identifier", + "src": "6751:12:1" + } + ], + "id": 934, + "name": "BinaryOperation", + "src": "6735:28:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "73616d6520636861696e207472616e736665727320617265206e6f7420737570706f72746564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"same chain transfers are not supported\"", + "value": "same chain transfers are not supported" + }, + "id": 935, + "name": "Literal", + "src": "6765:40:1" + } + ], + "id": 936, + "name": "FunctionCall", + "src": "6727:79:1" + } + ], + "id": 937, + "name": "ExpressionStatement", + "src": "6727:79:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", + "typeString": "literal_string \"transfer must be incoming\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 938, + "name": "Identifier", + "src": "6816:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 902, + "type": "uint8", + "value": "target_chain" + }, + "id": 939, + "name": "Identifier", + "src": "6824:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 362, + "type": "uint8", + "value": "CHAIN_ID" + }, + "id": 940, + "name": "Identifier", + "src": "6840:8:1" + } + ], + "id": 941, + "name": "BinaryOperation", + "src": "6824:24:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "7472616e73666572206d75737420626520696e636f6d696e67", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"transfer must be incoming\"", + "value": "transfer must be incoming" + }, + "id": 942, + "name": "Literal", + "src": "6850:27:1" + } + ], + "id": 943, + "name": "FunctionCall", + "src": "6816:62:1" + } + ], + "id": 944, + "name": "ExpressionStatement", + "src": "6816:62:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 918, + "type": "uint8", + "value": "token_chain" + }, + "id": 945, + "name": "Identifier", + "src": "6893:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 362, + "type": "uint8", + "value": "CHAIN_ID" + }, + "id": 946, + "name": "Identifier", + "src": "6908:8:1" + } + ], + "id": 947, + "name": "BinaryOperation", + "src": "6893:23:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [949] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token_address", + "overrides": null, + "scope": 1003, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 948, + "name": "ElementaryTypeName", + "src": "6932:7:1" + } + ], + "id": 949, + "name": "VariableDeclaration", + "src": "6932:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_71_by_1", + "typeString": "int_const 71" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toBytes32", + "referencedDeclaration": 298, + "type": "function (bytes memory,uint256) pure returns (bytes32)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 950, + "name": "Identifier", + "src": "6956:4:1" + } + ], + "id": 951, + "name": "MemberAccess", + "src": "6956:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3731", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 71", + "value": "71" + }, + "id": 952, + "name": "Literal", + "src": "6971:2:1" + } + ], + "id": 953, + "name": "FunctionCall", + "src": "6956:18:1" + } + ], + "id": 954, + "name": "VariableDeclarationStatement", + "src": "6932:42:1" + }, + { + "attributes": { + "assignments": [956] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "asset_id", + "overrides": null, + "scope": 1003, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 955, + "name": "ElementaryTypeName", + "src": "6988:7:1" + } + ], + "id": 956, + "name": "VariableDeclaration", + "src": "6988:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": -8, + "type": "function (bytes memory) pure returns (bytes32)", + "value": "keccak256" + }, + "id": 957, + "name": "Identifier", + "src": "7007:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "encodePacked", + "referencedDeclaration": null, + "type": "function () pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -1, + "type": "abi", + "value": "abi" + }, + "id": 958, + "name": "Identifier", + "src": "7017:3:1" + } + ], + "id": 959, + "name": "MemberAccess", + "src": "7017:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 918, + "type": "uint8", + "value": "token_chain" + }, + "id": 960, + "name": "Identifier", + "src": "7034:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 949, + "type": "bytes32", + "value": "token_address" + }, + "id": 961, + "name": "Identifier", + "src": "7047:13:1" + } + ], + "id": 962, + "name": "FunctionCall", + "src": "7017:44:1" + } + ], + "id": 963, + "name": "FunctionCall", + "src": "7007:55:1" + } + ], + "id": 964, + "name": "VariableDeclarationStatement", + "src": "6988:74:1" + }, + { + "attributes": { + "assignments": [966] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "wrapped_asset", + "overrides": null, + "scope": 1003, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 965, + "name": "ElementaryTypeName", + "src": "7154:7:1" + } + ], + "id": 966, + "name": "VariableDeclaration", + "src": "7154:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 424, + "type": "mapping(bytes32 => address)", + "value": "wrappedAssets" + }, + "id": 967, + "name": "Identifier", + "src": "7178:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 956, + "type": "bytes32", + "value": "asset_id" + }, + "id": 968, + "name": "Identifier", + "src": "7192:8:1" + } + ], + "id": 969, + "name": "IndexAccess", + "src": "7178:23:1" + } + ], + "id": 970, + "name": "VariableDeclarationStatement", + "src": "7154:47:1" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 966, + "type": "address", + "value": "wrapped_asset" + }, + "id": 971, + "name": "Identifier", + "src": "7219:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 972, + "name": "ElementaryTypeName", + "src": "7236:7:1" + } + ], + "id": 973, + "name": "ElementaryTypeNameExpression", + "src": "7236:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 974, + "name": "Literal", + "src": "7244:1:1" + } + ], + "id": 975, + "name": "FunctionCall", + "src": "7236:10:1" + } + ], + "id": 976, + "name": "BinaryOperation", + "src": "7219:27:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [978] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "asset_decimals", + "overrides": null, + "scope": 993, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 977, + "name": "ElementaryTypeName", + "src": "7266:5:1" + } + ], + "id": 978, + "name": "VariableDeclaration", + "src": "7266:20:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_103_by_1", + "typeString": "int_const 103" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toUint8", + "referencedDeclaration": 109, + "type": "function (bytes memory,uint256) pure returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 979, + "name": "Identifier", + "src": "7289:4:1" + } + ], + "id": 980, + "name": "MemberAccess", + "src": "7289:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "313033", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 103", + "value": "103" + }, + "id": 981, + "name": "Literal", + "src": "7302:3:1" + } + ], + "id": 982, + "name": "FunctionCall", + "src": "7289:17:1" + } + ], + "id": 983, + "name": "VariableDeclarationStatement", + "src": "7266:40:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 966, + "type": "address", + "value": "wrapped_asset" + }, + "id": 984, + "name": "Identifier", + "src": "7324:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1094, + "type": "function (bytes32,uint8,bytes32,uint8) returns (address)", + "value": "deployWrappedAsset" + }, + "id": 985, + "name": "Identifier", + "src": "7340:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 956, + "type": "bytes32", + "value": "asset_id" + }, + "id": 986, + "name": "Identifier", + "src": "7359:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 918, + "type": "uint8", + "value": "token_chain" + }, + "id": 987, + "name": "Identifier", + "src": "7369:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 949, + "type": "bytes32", + "value": "token_address" + }, + "id": 988, + "name": "Identifier", + "src": "7382:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 978, + "type": "uint8", + "value": "asset_decimals" + }, + "id": 989, + "name": "Identifier", + "src": "7397:14:1" + } + ], + "id": 990, + "name": "FunctionCall", + "src": "7340:72:1" + } + ], + "id": 991, + "name": "Assignment", + "src": "7324:88:1" + } + ], + "id": 992, + "name": "ExpressionStatement", + "src": "7324:88:1" + } + ], + "id": 993, + "name": "Block", + "src": "7248:179:1" + } + ], + "id": 994, + "name": "IfStatement", + "src": "7215:212:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "mint", + "referencedDeclaration": 1511, + "type": "function (address,uint256) external" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract WrappedAsset", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2147, + "type": "type(contract WrappedAsset)", + "value": "WrappedAsset" + }, + "id": 995, + "name": "Identifier", + "src": "7441:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 966, + "type": "address", + "value": "wrapped_asset" + }, + "id": 996, + "name": "Identifier", + "src": "7454:13:1" + } + ], + "id": 997, + "name": "FunctionCall", + "src": "7441:27:1" + } + ], + "id": 998, + "name": "MemberAccess", + "src": "7441:32:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 909, + "type": "address", + "value": "target_address" + }, + "id": 999, + "name": "Identifier", + "src": "7474:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 925, + "type": "uint256", + "value": "amount" + }, + "id": 1000, + "name": "Identifier", + "src": "7490:6:1" + } + ], + "id": 1001, + "name": "FunctionCall", + "src": "7441:56:1" + } + ], + "id": 1002, + "name": "ExpressionStatement", + "src": "7441:56:1" + } + ], + "id": 1003, + "name": "Block", + "src": "6918:590:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [1005] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token_address", + "overrides": null, + "scope": 1048, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1004, + "name": "ElementaryTypeName", + "src": "7528:7:1" + } + ], + "id": 1005, + "name": "VariableDeclaration", + "src": "7528:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_83_by_1", + "typeString": "int_const 83" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toAddress", + "referencedDeclaration": 82, + "type": "function (bytes memory,uint256) pure returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 891, + "type": "bytes memory", + "value": "data" + }, + "id": 1006, + "name": "Identifier", + "src": "7552:4:1" + } + ], + "id": 1007, + "name": "MemberAccess", + "src": "7552:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_83_by_1", + "typeString": "int_const 83" + }, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "operator": "+", + "type": "int_const 83" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3731", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 71", + "value": "71" + }, + "id": 1008, + "name": "Literal", + "src": "7567:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3132", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 12", + "value": "12" + }, + "id": 1009, + "name": "Literal", + "src": "7572:2:1" + } + ], + "id": 1010, + "name": "BinaryOperation", + "src": "7567:7:1" + } + ], + "id": 1011, + "name": "FunctionCall", + "src": "7552:23:1" + } + ], + "id": 1012, + "name": "VariableDeclarationStatement", + "src": "7528:47:1" + }, + { + "attributes": { + "assignments": [1014] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "decimals", + "overrides": null, + "scope": 1048, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1013, + "name": "ElementaryTypeName", + "src": "7590:5:1" + } + ], + "id": 1014, + "name": "VariableDeclaration", + "src": "7590:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "decimals", + "referencedDeclaration": 2584, + "type": "function () view external returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract ERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3008, + "type": "type(contract ERC20)", + "value": "ERC20" + }, + "id": 1015, + "name": "Identifier", + "src": "7607:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1005, + "type": "address", + "value": "token_address" + }, + "id": 1016, + "name": "Identifier", + "src": "7613:13:1" + } + ], + "id": 1017, + "name": "FunctionCall", + "src": "7607:20:1" + } + ], + "id": 1018, + "name": "MemberAccess", + "src": "7607:29:1" + } + ], + "id": 1019, + "name": "FunctionCall", + "src": "7607:31:1" + } + ], + "id": 1020, + "name": "VariableDeclarationStatement", + "src": "7590:48:1" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1014, + "type": "uint8", + "value": "decimals" + }, + "id": 1021, + "name": "Identifier", + "src": "7727:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1022, + "name": "Literal", + "src": "7738:1:1" + } + ], + "id": 1023, + "name": "BinaryOperation", + "src": "7727:12:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 925, + "type": "uint256", + "value": "amount" + }, + "id": 1024, + "name": "Identifier", + "src": "7759:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "mul", + "referencedDeclaration": 2388, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 925, + "type": "uint256", + "value": "amount" + }, + "id": 1025, + "name": "Identifier", + "src": "7768:6:1" + } + ], + "id": 1026, + "name": "MemberAccess", + "src": "7768:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "**", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1027, + "name": "Literal", + "src": "7779:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1028, + "name": "ElementaryTypeName", + "src": "7785:7:1" + } + ], + "id": 1029, + "name": "ElementaryTypeNameExpression", + "src": "7785:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1014, + "type": "uint8", + "value": "decimals" + }, + "id": 1030, + "name": "Identifier", + "src": "7793:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1031, + "name": "Literal", + "src": "7804:1:1" + } + ], + "id": 1032, + "name": "BinaryOperation", + "src": "7793:12:1" + } + ], + "id": 1033, + "name": "FunctionCall", + "src": "7785:21:1" + } + ], + "id": 1034, + "name": "BinaryOperation", + "src": "7779:27:1" + } + ], + "id": 1035, + "name": "FunctionCall", + "src": "7768:39:1" + } + ], + "id": 1036, + "name": "Assignment", + "src": "7759:48:1" + } + ], + "id": 1037, + "name": "ExpressionStatement", + "src": "7759:48:1" + } + ], + "id": 1038, + "name": "Block", + "src": "7741:81:1" + } + ], + "id": 1039, + "name": "IfStatement", + "src": "7723:99:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "safeTransfer", + "referencedDeclaration": 3120, + "type": "function (contract IERC20,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract IERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3086, + "type": "type(contract IERC20)", + "value": "IERC20" + }, + "id": 1040, + "name": "Identifier", + "src": "7835:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1005, + "type": "address", + "value": "token_address" + }, + "id": 1041, + "name": "Identifier", + "src": "7842:13:1" + } + ], + "id": 1042, + "name": "FunctionCall", + "src": "7835:21:1" + } + ], + "id": 1043, + "name": "MemberAccess", + "src": "7835:34:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 909, + "type": "address", + "value": "target_address" + }, + "id": 1044, + "name": "Identifier", + "src": "7870:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 925, + "type": "uint256", + "value": "amount" + }, + "id": 1045, + "name": "Identifier", + "src": "7886:6:1" + } + ], + "id": 1046, + "name": "FunctionCall", + "src": "7835:58:1" + } + ], + "id": 1047, + "name": "ExpressionStatement", + "src": "7835:58:1" + } + ], + "id": 1048, + "name": "Block", + "src": "7514:390:1" + } + ], + "id": 1049, + "name": "IfStatement", + "src": "6889:1015:1" + } + ], + "id": 1050, + "name": "Block", + "src": "6266:1644:1" + } + ], + "id": 1051, + "name": "FunctionDefinition", + "src": "6218:1692:1" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "deployWrappedAsset", + "overrides": null, + "scope": 1420, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "seed", + "overrides": null, + "scope": 1094, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 1052, + "name": "ElementaryTypeName", + "src": "7944:7:1" + } + ], + "id": 1053, + "name": "VariableDeclaration", + "src": "7944:12:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token_chain", + "overrides": null, + "scope": 1094, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1054, + "name": "ElementaryTypeName", + "src": "7958:5:1" + } + ], + "id": 1055, + "name": "VariableDeclaration", + "src": "7958:17:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "token_address", + "overrides": null, + "scope": 1094, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 1056, + "name": "ElementaryTypeName", + "src": "7977:7:1" + } + ], + "id": 1057, + "name": "VariableDeclaration", + "src": "7977:21:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "decimals", + "overrides": null, + "scope": 1094, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1058, + "name": "ElementaryTypeName", + "src": "8000:5:1" + } + ], + "id": 1059, + "name": "VariableDeclaration", + "src": "8000:14:1" + } + ], + "id": 1060, + "name": "ParameterList", + "src": "7943:72:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "asset", + "overrides": null, + "scope": 1094, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1061, + "name": "ElementaryTypeName", + "src": "8033:7:1" + } + ], + "id": 1062, + "name": "VariableDeclaration", + "src": "8033:13:1" + } + ], + "id": 1063, + "name": "ParameterList", + "src": "8032:15:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [1065] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "targetBytes", + "overrides": null, + "scope": 1093, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes20", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes20", + "type": "bytes20" + }, + "id": 1064, + "name": "ElementaryTypeName", + "src": "8225:7:1" + } + ], + "id": 1065, + "name": "VariableDeclaration", + "src": "8225:19:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bytes20)" + }, + "children": [ + { + "attributes": { + "name": "bytes20", + "type": null + }, + "id": 1066, + "name": "ElementaryTypeName", + "src": "8247:7:1" + } + ], + "id": 1067, + "name": "ElementaryTypeNameExpression", + "src": "8247:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 359, + "type": "address", + "value": "wrappedAssetMaster" + }, + "id": 1068, + "name": "Identifier", + "src": "8255:18:1" + } + ], + "id": 1069, + "name": "FunctionCall", + "src": "8247:27:1" + } + ], + "id": 1070, + "name": "VariableDeclarationStatement", + "src": "8225:49:1" + }, + { + "attributes": { + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 1062, + "isOffset": false, + "isSlot": false, + "src": "8593:5:1", + "valueSize": 1 + }, + { + "declaration": 1053, + "isOffset": false, + "isSlot": false, + "src": "8626:4:1", + "valueSize": 1 + }, + { + "declaration": 1065, + "isOffset": false, + "isSlot": false, + "src": "8463:11:1", + "valueSize": 1 + } + ], + "operations": "{\n let clone := mload(0x40)\n mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(clone, 0x14), targetBytes)\n mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n asset := create2(0, clone, 0x37, seed)\n}" + }, + "children": [], + "id": 1071, + "name": "InlineAssembly", + "src": "8284:357:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "initialize", + "referencedDeclaration": 1490, + "type": "function (uint8,bytes32,uint8) external" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract WrappedAsset", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2147, + "type": "type(contract WrappedAsset)", + "value": "WrappedAsset" + }, + "id": 1072, + "name": "Identifier", + "src": "8679:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1062, + "type": "address", + "value": "asset" + }, + "id": 1073, + "name": "Identifier", + "src": "8692:5:1" + } + ], + "id": 1074, + "name": "FunctionCall", + "src": "8679:19:1" + } + ], + "id": 1075, + "name": "MemberAccess", + "src": "8679:30:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1055, + "type": "uint8", + "value": "token_chain" + }, + "id": 1076, + "name": "Identifier", + "src": "8710:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1057, + "type": "bytes32", + "value": "token_address" + }, + "id": 1077, + "name": "Identifier", + "src": "8723:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1059, + "type": "uint8", + "value": "decimals" + }, + "id": 1078, + "name": "Identifier", + "src": "8738:8:1" + } + ], + "id": 1079, + "name": "FunctionCall", + "src": "8679:68:1" + } + ], + "id": 1080, + "name": "ExpressionStatement", + "src": "8679:68:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 424, + "type": "mapping(bytes32 => address)", + "value": "wrappedAssets" + }, + "id": 1081, + "name": "Identifier", + "src": "8783:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1053, + "type": "bytes32", + "value": "seed" + }, + "id": 1082, + "name": "Identifier", + "src": "8797:4:1" + } + ], + "id": 1083, + "name": "IndexAccess", + "src": "8783:19:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1062, + "type": "address", + "value": "asset" + }, + "id": 1084, + "name": "Identifier", + "src": "8805:5:1" + } + ], + "id": 1085, + "name": "Assignment", + "src": "8783:27:1" + } + ], + "id": 1086, + "name": "ExpressionStatement", + "src": "8783:27:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 428, + "type": "mapping(address => bool)", + "value": "isWrappedAsset" + }, + "id": 1087, + "name": "Identifier", + "src": "8820:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1062, + "type": "address", + "value": "asset" + }, + "id": 1088, + "name": "Identifier", + "src": "8835:5:1" + } + ], + "id": 1089, + "name": "IndexAccess", + "src": "8820:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 1090, + "name": "Literal", + "src": "8844:4:1" + } + ], + "id": 1091, + "name": "Assignment", + "src": "8820:28:1" + } + ], + "id": 1092, + "name": "ExpressionStatement", + "src": "8820:28:1" + } + ], + "id": 1093, + "name": "Block", + "src": "8047:808:1" + } + ], + "id": 1094, + "name": "FunctionDefinition", + "src": "7916:939:1" + }, + { + "attributes": { + "documentation": null, + "functionSelector": "70713960", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "lockAssets", + "overrides": null, + "scope": 1420, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "asset", + "overrides": null, + "scope": 1314, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1095, + "name": "ElementaryTypeName", + "src": "8890:7:1" + } + ], + "id": 1096, + "name": "VariableDeclaration", + "src": "8890:13:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 1314, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1097, + "name": "ElementaryTypeName", + "src": "8913:7:1" + } + ], + "id": 1098, + "name": "VariableDeclaration", + "src": "8913:14:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 1314, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 1099, + "name": "ElementaryTypeName", + "src": "8937:7:1" + } + ], + "id": 1100, + "name": "VariableDeclaration", + "src": "8937:17:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target_chain", + "overrides": null, + "scope": 1314, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1101, + "name": "ElementaryTypeName", + "src": "8964:5:1" + } + ], + "id": 1102, + "name": "VariableDeclaration", + "src": "8964:18:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "nonce", + "overrides": null, + "scope": 1314, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 1103, + "name": "ElementaryTypeName", + "src": "8992:6:1" + } + ], + "id": 1104, + "name": "VariableDeclaration", + "src": "8992:12:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "refund_dust", + "overrides": null, + "scope": 1314, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 1105, + "name": "ElementaryTypeName", + "src": "9014:4:1" + } + ], + "id": 1106, + "name": "VariableDeclaration", + "src": "9014:16:1" + } + ], + "id": 1107, + "name": "ParameterList", + "src": "8880:156:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1110, + "name": "ParameterList", + "src": "9057:0:1" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3657, + "type": "modifier ()", + "value": "nonReentrant" + }, + "id": 1108, + "name": "Identifier", + "src": "9044:12:1" + } + ], + "id": 1109, + "name": "ModifierInvocation", + "src": "9044:12:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_84da05290fceea4e386923ffe3e265c937087704025788355b73caadd151270b", + "typeString": "literal_string \"must not transfer to the same chain\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1111, + "name": "Identifier", + "src": "9067:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1102, + "type": "uint8", + "value": "target_chain" + }, + "id": 1112, + "name": "Identifier", + "src": "9075:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 362, + "type": "uint8", + "value": "CHAIN_ID" + }, + "id": 1113, + "name": "Identifier", + "src": "9091:8:1" + } + ], + "id": 1114, + "name": "BinaryOperation", + "src": "9075:24:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "6d757374206e6f74207472616e7366657220746f207468652073616d6520636861696e", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"must not transfer to the same chain\"", + "value": "must not transfer to the same chain" + }, + "id": 1115, + "name": "Literal", + "src": "9101:37:1" + } + ], + "id": 1116, + "name": "FunctionCall", + "src": "9067:72:1" + } + ], + "id": 1117, + "name": "ExpressionStatement", + "src": "9067:72:1" + }, + { + "attributes": { + "assignments": [1119] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "asset_chain", + "overrides": null, + "scope": 1313, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1118, + "name": "ElementaryTypeName", + "src": "9150:5:1" + } + ], + "id": 1119, + "name": "VariableDeclaration", + "src": "9150:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 362, + "type": "uint8", + "value": "CHAIN_ID" + }, + "id": 1120, + "name": "Identifier", + "src": "9170:8:1" + } + ], + "id": 1121, + "name": "VariableDeclarationStatement", + "src": "9150:28:1" + }, + { + "attributes": { + "assignments": [1123], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "asset_address", + "overrides": null, + "scope": 1313, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 1122, + "name": "ElementaryTypeName", + "src": "9188:7:1" + } + ], + "id": 1123, + "name": "VariableDeclaration", + "src": "9188:21:1" + } + ], + "id": 1124, + "name": "VariableDeclarationStatement", + "src": "9188:21:1" + }, + { + "attributes": { + "assignments": [1126] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "decimals", + "overrides": null, + "scope": 1313, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1125, + "name": "ElementaryTypeName", + "src": "9219:5:1" + } + ], + "id": 1126, + "name": "VariableDeclaration", + "src": "9219:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "decimals", + "referencedDeclaration": 2584, + "type": "function () view external returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract ERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3008, + "type": "type(contract ERC20)", + "value": "ERC20" + }, + "id": 1127, + "name": "Identifier", + "src": "9236:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1128, + "name": "Identifier", + "src": "9242:5:1" + } + ], + "id": 1129, + "name": "FunctionCall", + "src": "9236:12:1" + } + ], + "id": 1130, + "name": "MemberAccess", + "src": "9236:21:1" + } + ], + "id": 1131, + "name": "FunctionCall", + "src": "9236:23:1" + } + ], + "id": 1132, + "name": "VariableDeclarationStatement", + "src": "9219:40:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 428, + "type": "mapping(address => bool)", + "value": "isWrappedAsset" + }, + "id": 1133, + "name": "Identifier", + "src": "9274:14:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1134, + "name": "Identifier", + "src": "9289:5:1" + } + ], + "id": 1135, + "name": "IndexAccess", + "src": "9274:21:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "burn", + "referencedDeclaration": 1532, + "type": "function (address,uint256) external" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract WrappedAsset", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2147, + "type": "type(contract WrappedAsset)", + "value": "WrappedAsset" + }, + "id": 1136, + "name": "Identifier", + "src": "9311:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1137, + "name": "Identifier", + "src": "9324:5:1" + } + ], + "id": 1138, + "name": "FunctionCall", + "src": "9311:19:1" + } + ], + "id": 1139, + "name": "MemberAccess", + "src": "9311:24:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1140, + "name": "Identifier", + "src": "9336:3:1" + } + ], + "id": 1141, + "name": "MemberAccess", + "src": "9336:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1142, + "name": "Identifier", + "src": "9348:6:1" + } + ], + "id": 1143, + "name": "FunctionCall", + "src": "9311:44:1" + } + ], + "id": 1144, + "name": "ExpressionStatement", + "src": "9311:44:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1119, + "type": "uint8", + "value": "asset_chain" + }, + "id": 1145, + "name": "Identifier", + "src": "9369:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "assetChain", + "referencedDeclaration": 1443, + "type": "function () view external returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract WrappedAsset", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 2147, + "type": "type(contract WrappedAsset)", + "value": "WrappedAsset" + }, + "id": 1146, + "name": "Identifier", + "src": "9383:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1147, + "name": "Identifier", + "src": "9396:5:1" + } + ], + "id": 1148, + "name": "FunctionCall", + "src": "9383:19:1" + } + ], + "id": 1149, + "name": "MemberAccess", + "src": "9383:30:1" + } + ], + "id": 1150, + "name": "FunctionCall", + "src": "9383:32:1" + } + ], + "id": 1151, + "name": "Assignment", + "src": "9369:46:1" + } + ], + "id": 1152, + "name": "ExpressionStatement", + "src": "9369:46:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1123, + "type": "bytes32", + "value": "asset_address" + }, + "id": 1153, + "name": "Identifier", + "src": "9429:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "assetAddress", + "referencedDeclaration": 1445, + "type": "function () view external returns (bytes32)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract WrappedAsset", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 2147, + "type": "type(contract WrappedAsset)", + "value": "WrappedAsset" + }, + "id": 1154, + "name": "Identifier", + "src": "9445:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1155, + "name": "Identifier", + "src": "9458:5:1" + } + ], + "id": 1156, + "name": "FunctionCall", + "src": "9445:19:1" + } + ], + "id": 1157, + "name": "MemberAccess", + "src": "9445:32:1" + } + ], + "id": 1158, + "name": "FunctionCall", + "src": "9445:34:1" + } + ], + "id": 1159, + "name": "Assignment", + "src": "9429:50:1" + } + ], + "id": 1160, + "name": "ExpressionStatement", + "src": "9429:50:1" + } + ], + "id": 1161, + "name": "Block", + "src": "9297:193:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [1163] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "balanceBefore", + "overrides": null, + "scope": 1286, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1162, + "name": "ElementaryTypeName", + "src": "9510:7:1" + } + ], + "id": 1163, + "name": "VariableDeclaration", + "src": "9510:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "balanceOf", + "referencedDeclaration": 3025, + "type": "function (address) view external returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract IERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3086, + "type": "type(contract IERC20)", + "value": "IERC20" + }, + "id": 1164, + "name": "Identifier", + "src": "9534:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1165, + "name": "Identifier", + "src": "9541:5:1" + } + ], + "id": 1166, + "name": "FunctionCall", + "src": "9534:13:1" + } + ], + "id": 1167, + "name": "MemberAccess", + "src": "9534:23:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 1168, + "name": "ElementaryTypeName", + "src": "9558:7:1" + } + ], + "id": 1169, + "name": "ElementaryTypeNameExpression", + "src": "9558:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -28, + "type": "contract Wormhole", + "value": "this" + }, + "id": 1170, + "name": "Identifier", + "src": "9566:4:1" + } + ], + "id": 1171, + "name": "FunctionCall", + "src": "9558:13:1" + } + ], + "id": 1172, + "name": "FunctionCall", + "src": "9534:38:1" + } + ], + "id": 1173, + "name": "VariableDeclarationStatement", + "src": "9510:62:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "safeTransferFrom", + "referencedDeclaration": 3145, + "type": "function (contract IERC20,address,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract IERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3086, + "type": "type(contract IERC20)", + "value": "IERC20" + }, + "id": 1174, + "name": "Identifier", + "src": "9586:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1175, + "name": "Identifier", + "src": "9593:5:1" + } + ], + "id": 1176, + "name": "FunctionCall", + "src": "9586:13:1" + } + ], + "id": 1177, + "name": "MemberAccess", + "src": "9586:30:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1178, + "name": "Identifier", + "src": "9617:3:1" + } + ], + "id": 1179, + "name": "MemberAccess", + "src": "9617:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 1180, + "name": "ElementaryTypeName", + "src": "9629:7:1" + } + ], + "id": 1181, + "name": "ElementaryTypeNameExpression", + "src": "9629:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -28, + "type": "contract Wormhole", + "value": "this" + }, + "id": 1182, + "name": "Identifier", + "src": "9637:4:1" + } + ], + "id": 1183, + "name": "FunctionCall", + "src": "9629:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1184, + "name": "Identifier", + "src": "9644:6:1" + } + ], + "id": 1185, + "name": "FunctionCall", + "src": "9586:65:1" + } + ], + "id": 1186, + "name": "ExpressionStatement", + "src": "9586:65:1" + }, + { + "attributes": { + "assignments": [1188] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "balanceAfter", + "overrides": null, + "scope": 1286, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1187, + "name": "ElementaryTypeName", + "src": "9665:7:1" + } + ], + "id": 1188, + "name": "VariableDeclaration", + "src": "9665:20:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "balanceOf", + "referencedDeclaration": 3025, + "type": "function (address) view external returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract IERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3086, + "type": "type(contract IERC20)", + "value": "IERC20" + }, + "id": 1189, + "name": "Identifier", + "src": "9688:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1190, + "name": "Identifier", + "src": "9695:5:1" + } + ], + "id": 1191, + "name": "FunctionCall", + "src": "9688:13:1" + } + ], + "id": 1192, + "name": "MemberAccess", + "src": "9688:23:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Wormhole_$1420", + "typeString": "contract Wormhole" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 1193, + "name": "ElementaryTypeName", + "src": "9712:7:1" + } + ], + "id": 1194, + "name": "ElementaryTypeNameExpression", + "src": "9712:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -28, + "type": "contract Wormhole", + "value": "this" + }, + "id": 1195, + "name": "Identifier", + "src": "9720:4:1" + } + ], + "id": 1196, + "name": "FunctionCall", + "src": "9712:13:1" + } + ], + "id": 1197, + "name": "FunctionCall", + "src": "9688:38:1" + } + ], + "id": 1198, + "name": "VariableDeclarationStatement", + "src": "9665:61:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1199, + "name": "Identifier", + "src": "9931:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 2354, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1188, + "type": "uint256", + "value": "balanceAfter" + }, + "id": 1200, + "name": "Identifier", + "src": "9940:12:1" + } + ], + "id": 1201, + "name": "MemberAccess", + "src": "9940:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1163, + "type": "uint256", + "value": "balanceBefore" + }, + "id": 1202, + "name": "Identifier", + "src": "9957:13:1" + } + ], + "id": 1203, + "name": "FunctionCall", + "src": "9940:31:1" + } + ], + "id": 1204, + "name": "Assignment", + "src": "9931:40:1" + } + ], + "id": 1205, + "name": "ExpressionStatement", + "src": "9931:40:1" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1126, + "type": "uint8", + "value": "decimals" + }, + "id": 1206, + "name": "Identifier", + "src": "10046:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1207, + "name": "Literal", + "src": "10057:1:1" + } + ], + "id": 1208, + "name": "BinaryOperation", + "src": "10046:12:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [1210] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "original_amount", + "overrides": null, + "scope": 1253, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1209, + "name": "ElementaryTypeName", + "src": "10078:7:1" + } + ], + "id": 1210, + "name": "VariableDeclaration", + "src": "10078:23:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1211, + "name": "Identifier", + "src": "10104:6:1" + } + ], + "id": 1212, + "name": "VariableDeclarationStatement", + "src": "10078:32:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1213, + "name": "Identifier", + "src": "10128:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "div", + "referencedDeclaration": 2410, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1214, + "name": "Identifier", + "src": "10137:6:1" + } + ], + "id": 1215, + "name": "MemberAccess", + "src": "10137:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "**", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1216, + "name": "Literal", + "src": "10148:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1217, + "name": "ElementaryTypeName", + "src": "10154:7:1" + } + ], + "id": 1218, + "name": "ElementaryTypeNameExpression", + "src": "10154:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1126, + "type": "uint8", + "value": "decimals" + }, + "id": 1219, + "name": "Identifier", + "src": "10162:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1220, + "name": "Literal", + "src": "10173:1:1" + } + ], + "id": 1221, + "name": "BinaryOperation", + "src": "10162:12:1" + } + ], + "id": 1222, + "name": "FunctionCall", + "src": "10154:21:1" + } + ], + "id": 1223, + "name": "BinaryOperation", + "src": "10148:27:1" + } + ], + "id": 1224, + "name": "FunctionCall", + "src": "10137:39:1" + } + ], + "id": 1225, + "name": "Assignment", + "src": "10128:48:1" + } + ], + "id": 1226, + "name": "ExpressionStatement", + "src": "10128:48:1" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1106, + "type": "bool", + "value": "refund_dust" + }, + "id": 1227, + "name": "Identifier", + "src": "10199:11:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "safeTransfer", + "referencedDeclaration": 3120, + "type": "function (contract IERC20,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract IERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 3086, + "type": "type(contract IERC20)", + "value": "IERC20" + }, + "id": 1228, + "name": "Identifier", + "src": "10234:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1229, + "name": "Identifier", + "src": "10241:5:1" + } + ], + "id": 1230, + "name": "FunctionCall", + "src": "10234:13:1" + } + ], + "id": 1231, + "name": "MemberAccess", + "src": "10234:26:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1232, + "name": "Identifier", + "src": "10261:3:1" + } + ], + "id": 1233, + "name": "MemberAccess", + "src": "10261:10:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "mod", + "referencedDeclaration": 2432, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1210, + "type": "uint256", + "value": "original_amount" + }, + "id": 1234, + "name": "Identifier", + "src": "10273:15:1" + } + ], + "id": 1235, + "name": "MemberAccess", + "src": "10273:19:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "**", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1236, + "name": "Literal", + "src": "10293:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1237, + "name": "ElementaryTypeName", + "src": "10299:7:1" + } + ], + "id": 1238, + "name": "ElementaryTypeNameExpression", + "src": "10299:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1126, + "type": "uint8", + "value": "decimals" + }, + "id": 1239, + "name": "Identifier", + "src": "10307:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1240, + "name": "Literal", + "src": "10318:1:1" + } + ], + "id": 1241, + "name": "BinaryOperation", + "src": "10307:12:1" + } + ], + "id": 1242, + "name": "FunctionCall", + "src": "10299:21:1" + } + ], + "id": 1243, + "name": "BinaryOperation", + "src": "10293:27:1" + } + ], + "id": 1244, + "name": "FunctionCall", + "src": "10273:48:1" + } + ], + "id": 1245, + "name": "FunctionCall", + "src": "10234:88:1" + } + ], + "id": 1246, + "name": "ExpressionStatement", + "src": "10234:88:1" + } + ], + "id": 1247, + "name": "Block", + "src": "10212:129:1" + } + ], + "id": 1248, + "name": "IfStatement", + "src": "10195:146:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1126, + "type": "uint8", + "value": "decimals" + }, + "id": 1249, + "name": "Identifier", + "src": "10359:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1250, + "name": "Literal", + "src": "10370:1:1" + } + ], + "id": 1251, + "name": "Assignment", + "src": "10359:12:1" + } + ], + "id": 1252, + "name": "ExpressionStatement", + "src": "10359:12:1" + } + ], + "id": 1253, + "name": "Block", + "src": "10060:326:1" + } + ], + "id": 1254, + "name": "IfStatement", + "src": "10042:344:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4", + "typeString": "literal_string \"bridge balance would exceed maximum\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1255, + "name": "Identifier", + "src": "10400:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "div", + "referencedDeclaration": 2410, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1188, + "type": "uint256", + "value": "balanceAfter" + }, + "id": 1256, + "name": "Identifier", + "src": "10408:12:1" + } + ], + "id": 1257, + "name": "MemberAccess", + "src": "10408:16:1" + }, + { + "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3130", - "id": 1112, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8953:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "nodeType": "BinaryOperation", "operator": "**", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 1117, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1115, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1002, - "src": "8967:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "39", - "id": 1116, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8978:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_9_by_1", - "typeString": "int_const 9" - }, - "value": "9" - }, - "src": "8967:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 1114, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8959:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1113, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8959:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" }, - "id": 1118, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8959:21:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "id": 1258, + "name": "Literal", + "src": "10425:2:1" }, - "src": "8953:27:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1259, + "name": "ElementaryTypeName", + "src": "10431:7:1" + } + ], + "id": 1260, + "name": "ElementaryTypeNameExpression", + "src": "10431:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "decimals", + "referencedDeclaration": 2584, + "type": "function () view external returns (uint8)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "tryCall": false, + "type": "contract ERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 3008, + "type": "type(contract ERC20)", + "value": "ERC20" + }, + "id": 1261, + "name": "Identifier", + "src": "10439:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1262, + "name": "Identifier", + "src": "10445:5:1" + } + ], + "id": 1263, + "name": "FunctionCall", + "src": "10439:12:1" + } + ], + "id": 1264, + "name": "MemberAccess", + "src": "10439:21:1" + } + ], + "id": 1265, + "name": "FunctionCall", + "src": "10439:23:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1266, + "name": "Literal", + "src": "10465:1:1" + } + ], + "id": 1267, + "name": "BinaryOperation", + "src": "10439:27:1" + } + ], + "id": 1268, + "name": "FunctionCall", + "src": "10431:36:1" } ], - "expression": { - "argumentTypes": null, - "id": 1110, - "name": "original_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "8933:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1111, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mod", - "nodeType": "MemberAccess", - "referencedDeclaration": 2005, - "src": "8933:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 1120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8933:48:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "id": 1269, + "name": "BinaryOperation", + "src": "10425:42:1" } ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1105, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "8905:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1104, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2537, - "src": "8899:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$", - "typeString": "type(contract ERC20)" - } - }, - "id": 1106, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8899:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$2537", - "typeString": "contract ERC20" - } - }, - "id": 1107, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 2158, - "src": "8899:21:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" - } + "id": 1270, + "name": "FunctionCall", + "src": "10408:60:1" }, - "id": 1121, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 357, + "type": "uint64", + "value": "MAX_UINT64" + }, + "id": 1271, + "name": "Identifier", + "src": "10472:10:1" + } + ], + "id": 1272, + "name": "BinaryOperation", + "src": "10408:74:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "6272696467652062616c616e636520776f756c6420657863656564206d6178696d756d", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"bridge balance would exceed maximum\"", + "value": "bridge balance would exceed maximum" + }, + "id": 1273, + "name": "Literal", + "src": "10484:37:1" + } + ], + "id": 1274, + "name": "FunctionCall", + "src": "10400:122:1" + } + ], + "id": 1275, + "name": "ExpressionStatement", + "src": "10400:122:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1123, + "type": "bytes32", + "value": "asset_address" + }, + "id": 1276, + "name": "Identifier", + "src": "10537:13:1" + }, + { + "attributes": { + "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", + "isStructConstructorCall": false, "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8899:83:1", + "names": [null], "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "type": "bytes32", + "type_conversion": true }, - "id": 1122, - "nodeType": "ExpressionStatement", - "src": "8899:83:1" + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bytes32)" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": null + }, + "id": 1277, + "name": "ElementaryTypeName", + "src": "10553:7:1" + } + ], + "id": 1278, + "name": "ElementaryTypeNameExpression", + "src": "10553:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1279, + "name": "ElementaryTypeName", + "src": "10561:7:1" + } + ], + "id": 1280, + "name": "ElementaryTypeNameExpression", + "src": "10561:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1096, + "type": "address", + "value": "asset" + }, + "id": 1281, + "name": "Identifier", + "src": "10569:5:1" + } + ], + "id": 1282, + "name": "FunctionCall", + "src": "10561:14:1" + } + ], + "id": 1283, + "name": "FunctionCall", + "src": "10553:23:1" } - ] + ], + "id": 1284, + "name": "Assignment", + "src": "10537:39:1" } - }, - { - "expression": { - "argumentTypes": null, - "id": 1127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1125, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1002, - "src": "9019:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "39", - "id": 1126, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9030:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_9_by_1", - "typeString": "int_const 9" - }, - "value": "9" - }, - "src": "9019:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 1128, - "nodeType": "ExpressionStatement", - "src": "9019:12:1" - } - ] - } - }, + ], + "id": 1285, + "name": "ExpressionStatement", + "src": "10537:39:1" + } + ], + "id": 1286, + "name": "Block", + "src": "9496:1091:1" + } + ], + "id": 1287, + "name": "IfStatement", + "src": "9270:1317:1" + }, + { + "children": [ { - "expression": { + "attributes": { "argumentTypes": null, - "arguments": [ - { + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91dc3b6ab9754748867317f89b73413ba314ee8a1acb42b6836d39d61d9e310e", + "typeString": "literal_string \"truncated amount must not be 0\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1288, + "name": "Identifier", + "src": "10636:7:1" + }, + { + "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3130", - "id": 1134, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9085:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 1143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1138, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "9105:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1137, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2537, - "src": "9099:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$", - "typeString": "type(contract ERC20)" - } - }, - "id": 1139, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9099:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$2537", - "typeString": "contract ERC20" - } - }, - "id": 1140, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "decimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 2113, - "src": "9099:21:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", - "typeString": "function () view external returns (uint8)" - } - }, - "id": 1141, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9099:23:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "39", - "id": 1142, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9125:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_9_by_1", - "typeString": "int_const 9" - }, - "value": "9" - }, - "src": "9099:27:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 1136, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9091:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1135, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9091:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1144, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9091:36:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9085:42:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1132, - "name": "balanceAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1064, - "src": "9068:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1133, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "div", - "nodeType": "MemberAccess", - "referencedDeclaration": 1960, - "src": "9068:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 1146, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9068:60:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "id": 1147, - "name": "MAX_UINT64", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 357, - "src": "9132:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "9068:74:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "operator": "!=", + "type": "bool" }, - { - "argumentTypes": null, - "hexValue": "6272696467652062616c616e636520776f756c6420657863656564206d6178696d756d", - "id": 1149, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9144:37:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4", - "typeString": "literal_string \"bridge balance would exceed maximum\"" - }, - "value": "bridge balance would exceed maximum" - } - ], - "expression": { - "argumentTypes": [ + "children": [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1289, + "name": "Identifier", + "src": "10644:6:1" }, { - "typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4", - "typeString": "literal_string \"bridge balance would exceed maximum\"" - } - ], - "id": 1131, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "9060:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1150, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9060:122:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1151, - "nodeType": "ExpressionStatement", - "src": "9060:122:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 1160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1152, - "name": "asset_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "9197:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1157, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "9229:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1156, + "attributes": { + "argumentTypes": null, + "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9221:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1155, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9221:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" }, - "id": 1158, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9221:14:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "id": 1290, + "name": "Literal", + "src": "10654:1:1" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1154, + "id": 1291, + "name": "BinaryOperation", + "src": "10644:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "7472756e636174656420616d6f756e74206d757374206e6f742062652030", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9213:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 1153, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9213:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } + "subdenomination": null, + "token": "string", + "type": "literal_string \"truncated amount must not be 0\"", + "value": "truncated amount must not be 0" }, - "id": 1159, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9213:23:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "9197:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "id": 1292, + "name": "Literal", + "src": "10657:32:1" } - }, - "id": 1161, - "nodeType": "ExpressionStatement", - "src": "9197:39:1" + ], + "id": 1293, + "name": "FunctionCall", + "src": "10636:54:1" } - ] + ], + "id": 1294, + "name": "ExpressionStatement", + "src": "10636:54:1" }, - "id": 1163, - "nodeType": "IfStatement", - "src": "7935:1312:1", - "trueBody": { - "id": 1037, - "nodeType": "Block", - "src": "7962:193:1", - "statements": [ + { + "children": [ { - "expression": { + "attributes": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1016, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "8001:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1017, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8001:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 1018, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "8013:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ { - "argumentTypes": null, - "id": 1013, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "7989:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1012, - "name": "WrappedAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "7976:12:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", - "typeString": "type(contract WrappedAsset)" - } - }, - "id": 1014, + "overloadedDeclarations": [null], + "referencedDeclaration": 395, + "type": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)", + "value": "LogTokensLocked" + }, + "id": 1295, + "name": "Identifier", + "src": "10706:15:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1102, + "type": "uint8", + "value": "target_chain" + }, + "id": 1296, + "name": "Identifier", + "src": "10722:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1119, + "type": "uint8", + "value": "asset_chain" + }, + "id": 1297, + "name": "Identifier", + "src": "10736:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1126, + "type": "uint8", + "value": "decimals" + }, + "id": 1298, + "name": "Identifier", + "src": "10749:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1123, + "type": "bytes32", + "value": "asset_address" + }, + "id": 1299, + "name": "Identifier", + "src": "10759:13:1" + }, + { + "attributes": { + "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "typeConversion", + "isStructConstructorCall": false, "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7976:19:1", + "names": [null], "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_WrappedAsset_$1811", - "typeString": "contract WrappedAsset" - } + "type": "bytes32", + "type_conversion": true }, - "id": 1015, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "burn", - "nodeType": "MemberAccess", - "referencedDeclaration": 1370, - "src": "7976:24:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256) external" - } - }, - "id": 1019, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7976:44:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1020, - "nodeType": "ExpressionStatement", - "src": "7976:44:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 1027, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1021, - "name": "asset_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 995, - "src": "8034:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1023, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "8061:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1022, - "name": "WrappedAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "8048:12:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", - "typeString": "type(contract WrappedAsset)" - } - }, - "id": 1024, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8048:19:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_WrappedAsset_$1811", - "typeString": "contract WrappedAsset" - } - }, - "id": 1025, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "assetChain", - "nodeType": "MemberAccess", - "referencedDeclaration": 1277, - "src": "8048:30:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", - "typeString": "function () view external returns (uint8)" - } - }, - "id": 1026, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8048:32:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "8034:46:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 1028, - "nodeType": "ExpressionStatement", - "src": "8034:46:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 1035, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1029, - "name": "asset_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "8094:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1031, - "name": "asset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "8123:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1030, - "name": "WrappedAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "8110:12:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", - "typeString": "type(contract WrappedAsset)" - } - }, - "id": 1032, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8110:19:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_WrappedAsset_$1811", - "typeString": "contract WrappedAsset" - } - }, - "id": 1033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "assetAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 1279, - "src": "8110:32:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", - "typeString": "function () view external returns (bytes32)" - } - }, - "id": 1034, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8110:34:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "8094:50:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1036, - "nodeType": "ExpressionStatement", - "src": "8094:50:1" - } - ] - } - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1165, - "name": "target_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "9278:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1166, - "name": "asset_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 995, - "src": "9292:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1167, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1002, - "src": "9305:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1168, - "name": "asset_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "9315:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ + "children": [ { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1173, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "9346:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bytes32)" }, - "id": 1174, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9346:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } + "children": [ + { + "attributes": { + "name": "bytes32", + "type": null + }, + "id": 1300, + "name": "ElementaryTypeName", + "src": "10774:7:1" + } + ], + "id": 1301, + "name": "ElementaryTypeNameExpression", + "src": "10774:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1302, + "name": "ElementaryTypeName", + "src": "10782:7:1" + } + ], + "id": 1303, + "name": "ElementaryTypeNameExpression", + "src": "10782:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1304, + "name": "Identifier", + "src": "10790:3:1" + } + ], + "id": 1305, + "name": "MemberAccess", + "src": "10790:10:1" + } + ], + "id": 1306, + "name": "FunctionCall", + "src": "10782:19:1" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 1172, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9338:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1171, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9338:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1175, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9338:19:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1170, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9330:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" + "id": 1307, + "name": "FunctionCall", + "src": "10774:28:1" }, - "typeName": { - "id": 1169, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9330:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1176, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9330:28:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1177, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 976, - "src": "9360:9:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1178, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "9371:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1179, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 980, - "src": "9379:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 1164, - "name": "LogTokensLocked", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 395, - "src": "9262:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", - "typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" - } - }, - "id": 1180, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9262:123:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1181, - "nodeType": "EmitStatement", - "src": "9257:128:1" - } - ] - }, - "documentation": null, - "functionSelector": "70713960", - "id": 1183, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 985, - "modifierName": { - "argumentTypes": null, - "id": 984, - "name": "nonReentrant", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3071, - "src": "7737:12:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "7737:12:1" - } - ], - "name": "lockAssets", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 983, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 972, - "mutability": "mutable", - "name": "asset", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1183, - "src": "7583:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 971, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7583:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 974, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1183, - "src": "7606:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 973, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7606:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 976, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1183, - "src": "7630:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 975, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7630:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 978, - "mutability": "mutable", - "name": "target_chain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1183, - "src": "7657:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 977, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "7657:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 980, - "mutability": "mutable", - "name": "nonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1183, - "src": "7685:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 979, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "7685:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 982, - "mutability": "mutable", - "name": "refund_dust", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1183, - "src": "7707:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 981, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7707:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7573:156:1" - }, - "returnParameters": { - "id": 986, - "nodeType": "ParameterList", - "parameters": [], - "src": "7750:0:1" - }, - "scope": 1254, - "src": "7554:1838:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1236, - "nodeType": "Block", - "src": "9526:334:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1195, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "9544:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1196, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9544:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1197, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9557:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9544:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "616d6f756e74206d757374206e6f742062652030", - "id": 1199, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9560:22:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", - "typeString": "literal_string \"amount must not be 0\"" - }, - "value": "amount must not be 0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", - "typeString": "literal_string \"amount must not be 0\"" - } - ], - "id": 1194, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "9536:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9536:47:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1201, - "nodeType": "ExpressionStatement", - "src": "9536:47:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { + { + "attributes": { "argumentTypes": null, - "id": 1203, - "name": "WETHAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 365, - "src": "9632:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1202, - "name": "WETH", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1265, - "src": "9627:4:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_WETH_$1265_$", - "typeString": "type(contract WETH)" - } + "overloadedDeclarations": [null], + "referencedDeclaration": 1100, + "type": "bytes32", + "value": "recipient" + }, + "id": 1308, + "name": "Identifier", + "src": "10804:9:1" }, - "id": 1204, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9627:17:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_WETH_$1265", - "typeString": "contract WETH" + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1098, + "type": "uint256", + "value": "amount" + }, + "id": 1309, + "name": "Identifier", + "src": "10815:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1104, + "type": "uint32", + "value": "nonce" + }, + "id": 1310, + "name": "Identifier", + "src": "10823:5:1" } + ], + "id": 1311, + "name": "FunctionCall", + "src": "10706:123:1" + } + ], + "id": 1312, + "name": "EmitStatement", + "src": "10701:128:1" + } + ], + "id": 1313, + "name": "Block", + "src": "9057:1779:1" + } + ], + "id": 1314, + "name": "FunctionDefinition", + "src": "8861:1975:1" + }, + { + "attributes": { + "documentation": null, + "functionSelector": "58d62e46", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "lockETH", + "overrides": null, + "scope": 1420, + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 1403, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" }, - "id": 1205, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "deposit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1259, - "src": "9627:25:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_payable$__$returns$__$", - "typeString": "function () payable external" - } - }, - "id": 1208, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "names": ["value"], - "nodeType": "FunctionCallOptions", - "options": [ - { + "id": 1315, + "name": "ElementaryTypeName", + "src": "10868:7:1" + } + ], + "id": 1316, + "name": "VariableDeclaration", + "src": "10868:17:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "target_chain", + "overrides": null, + "scope": 1403, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1317, + "name": "ElementaryTypeName", + "src": "10895:5:1" + } + ], + "id": 1318, + "name": "VariableDeclaration", + "src": "10895:18:1" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "nonce", + "overrides": null, + "scope": 1403, + "stateVariable": false, + "storageLocation": "default", + "type": "uint32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint32", + "type": "uint32" + }, + "id": 1319, + "name": "ElementaryTypeName", + "src": "10923:6:1" + } + ], + "id": 1320, + "name": "VariableDeclaration", + "src": "10923:12:1" + } + ], + "id": 1321, + "name": "ParameterList", + "src": "10858:83:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1324, + "name": "ParameterList", + "src": "10970:0:1" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 3657, + "type": "modifier ()", + "value": "nonReentrant" + }, + "id": 1322, + "name": "Identifier", + "src": "10957:12:1" + } + ], + "id": 1323, + "name": "ModifierInvocation", + "src": "10957:12:1" + }, + { + "children": [ + { + "children": [ + { + "attributes": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1206, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "9661:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1207, "isConstant": false, "isLValue": false, "isPure": false, + "isStructConstructorCall": false, "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9661:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "src": "9627:44:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_payable$__$returns$__$value", - "typeString": "function () payable external" - } - }, - "id": 1209, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9627:46:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1210, - "nodeType": "ExpressionStatement", - "src": "9627:46:1" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1212, - "name": "target_chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1187, - "src": "9736:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1213, - "name": "CHAIN_ID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "9750:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "hexValue": "3138", - "id": 1214, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9760:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false }, - "value": "18" - }, - { - "argumentTypes": null, - "arguments": [ + "children": [ { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1219, - "name": "WETHAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 365, - "src": "9780:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { + "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9772:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1217, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9772:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1220, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9772:20:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1216, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9764:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 1215, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9764:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1221, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9764:29:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1226, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "9811:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "id": 1227, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9811:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + "typeIdentifier": "t_stringliteral_84da05290fceea4e386923ffe3e265c937087704025788355b73caadd151270b", + "typeString": "literal_string \"must not transfer to the same chain\"" } ], - "id": 1225, + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1325, + "name": "Identifier", + "src": "10980:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1318, + "type": "uint8", + "value": "target_chain" + }, + "id": 1326, + "name": "Identifier", + "src": "10988:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 362, + "type": "uint8", + "value": "CHAIN_ID" + }, + "id": 1327, + "name": "Identifier", + "src": "11004:8:1" + } + ], + "id": 1328, + "name": "BinaryOperation", + "src": "10988:24:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "6d757374206e6f74207472616e7366657220746f207468652073616d6520636861696e", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9803:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1224, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9803:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } + "subdenomination": null, + "token": "string", + "type": "literal_string \"must not transfer to the same chain\"", + "value": "must not transfer to the same chain" }, - "id": 1228, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9803:19:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "id": 1329, + "name": "Literal", + "src": "11014:37:1" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1223, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9795:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 1222, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9795:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1229, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9795:28:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1230, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1185, - "src": "9825:9:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1231, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "9836:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1232, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9836:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1233, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1189, - "src": "9847:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } + "id": 1330, + "name": "FunctionCall", + "src": "10980:72:1" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 1211, - "name": "LogTokensLocked", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 395, - "src": "9720:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", - "typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" - } - }, - "id": 1234, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9720:133:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "id": 1331, + "name": "ExpressionStatement", + "src": "10980:72:1" }, - "id": 1235, - "nodeType": "EmitStatement", - "src": "9715:138:1" - } - ] - }, - "documentation": null, - "functionSelector": "58d62e46", - "id": 1237, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 1192, - "modifierName": { - "argumentTypes": null, - "id": 1191, - "name": "nonReentrant", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3071, - "src": "9513:12:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" + { + "attributes": { + "assignments": [1333] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "remainder", + "overrides": null, + "scope": 1402, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1332, + "name": "ElementaryTypeName", + "src": "11063:7:1" + } + ], + "id": 1333, + "name": "VariableDeclaration", + "src": "11063:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "mod", + "referencedDeclaration": 2432, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "value", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1334, + "name": "Identifier", + "src": "11083:3:1" + } + ], + "id": 1335, + "name": "MemberAccess", + "src": "11083:9:1" + } + ], + "id": 1336, + "name": "MemberAccess", + "src": "11083:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + }, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "operator": "**", + "type": "int_const 1000000000" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1337, + "name": "Literal", + "src": "11097:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1338, + "name": "Literal", + "src": "11103:1:1" + } + ], + "id": 1339, + "name": "BinaryOperation", + "src": "11097:7:1" + } + ], + "id": 1340, + "name": "FunctionCall", + "src": "11083:22:1" + } + ], + "id": 1341, + "name": "VariableDeclarationStatement", + "src": "11063:42:1" + }, + { + "attributes": { + "assignments": [1343] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "transfer_amount", + "overrides": null, + "scope": 1402, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1342, + "name": "ElementaryTypeName", + "src": "11115:7:1" + } + ], + "id": 1343, + "name": "VariableDeclaration", + "src": "11115:23:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "div", + "referencedDeclaration": 2410, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "value", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1344, + "name": "Identifier", + "src": "11141:3:1" + } + ], + "id": 1345, + "name": "MemberAccess", + "src": "11141:9:1" + } + ], + "id": 1346, + "name": "MemberAccess", + "src": "11141:13:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_1000000000_by_1", + "typeString": "int_const 1000000000" + }, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "operator": "**", + "type": "int_const 1000000000" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1347, + "name": "Literal", + "src": "11155:2:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1348, + "name": "Literal", + "src": "11161:1:1" + } + ], + "id": 1349, + "name": "BinaryOperation", + "src": "11155:7:1" + } + ], + "id": 1350, + "name": "FunctionCall", + "src": "11141:22:1" + } + ], + "id": 1351, + "name": "VariableDeclarationStatement", + "src": "11115:48:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91dc3b6ab9754748867317f89b73413ba314ee8a1acb42b6836d39d61d9e310e", + "typeString": "literal_string \"truncated amount must not be 0\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1352, + "name": "Identifier", + "src": "11173:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1343, + "type": "uint256", + "value": "transfer_amount" + }, + "id": 1353, + "name": "Identifier", + "src": "11181:15:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 1354, + "name": "Literal", + "src": "11200:1:1" + } + ], + "id": 1355, + "name": "BinaryOperation", + "src": "11181:20:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "7472756e636174656420616d6f756e74206d757374206e6f742062652030", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"truncated amount must not be 0\"", + "value": "truncated amount must not be 0" + }, + "id": 1356, + "name": "Literal", + "src": "11203:32:1" + } + ], + "id": 1357, + "name": "FunctionCall", + "src": "11173:63:1" + } + ], + "id": 1358, + "name": "ExpressionStatement", + "src": "11173:63:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "transfer", + "referencedDeclaration": null, + "type": "function (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1359, + "name": "Identifier", + "src": "11282:3:1" + } + ], + "id": 1362, + "name": "MemberAccess", + "src": "11282:10:1" + } + ], + "id": 1363, + "name": "MemberAccess", + "src": "11282:19:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1333, + "type": "uint256", + "value": "remainder" + }, + "id": 1364, + "name": "Identifier", + "src": "11302:9:1" + } + ], + "id": 1365, + "name": "FunctionCall", + "src": "11282:30:1" + } + ], + "id": 1366, + "name": "ExpressionStatement", + "src": "11282:30:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": ["value"], + "type": "function () payable external" + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "deposit", + "referencedDeclaration": 1425, + "type": "function () payable external" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "contract WETH", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1431, + "type": "type(contract WETH)", + "value": "WETH" + }, + "id": 1367, + "name": "Identifier", + "src": "11356:4:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 365, + "type": "address", + "value": "WETHAddress" + }, + "id": 1368, + "name": "Identifier", + "src": "11361:11:1" + } + ], + "id": 1369, + "name": "FunctionCall", + "src": "11356:17:1" + } + ], + "id": 1370, + "name": "MemberAccess", + "src": "11356:25:1" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "value", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1371, + "name": "Identifier", + "src": "11390:3:1" + } + ], + "id": 1372, + "name": "MemberAccess", + "src": "11390:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1333, + "type": "uint256", + "value": "remainder" + }, + "id": 1373, + "name": "Identifier", + "src": "11402:9:1" + } + ], + "id": 1374, + "name": "BinaryOperation", + "src": "11390:21:1" + } + ], + "id": 1375, + "name": "FunctionCallOptions", + "src": "11356:56:1" + } + ], + "id": 1376, + "name": "FunctionCall", + "src": "11356:58:1" + } + ], + "id": 1377, + "name": "ExpressionStatement", + "src": "11356:58:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 395, + "type": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)", + "value": "LogTokensLocked" + }, + "id": 1378, + "name": "Identifier", + "src": "11461:15:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1318, + "type": "uint8", + "value": "target_chain" + }, + "id": 1379, + "name": "Identifier", + "src": "11477:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 362, + "type": "uint8", + "value": "CHAIN_ID" + }, + "id": 1380, + "name": "Identifier", + "src": "11491:8:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "39", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 9", + "value": "9" + }, + "id": 1381, + "name": "Literal", + "src": "11501:1:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bytes32)" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": null + }, + "id": 1382, + "name": "ElementaryTypeName", + "src": "11504:7:1" + } + ], + "id": 1383, + "name": "ElementaryTypeNameExpression", + "src": "11504:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1384, + "name": "ElementaryTypeName", + "src": "11512:7:1" + } + ], + "id": 1385, + "name": "ElementaryTypeNameExpression", + "src": "11512:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 365, + "type": "address", + "value": "WETHAddress" + }, + "id": 1386, + "name": "Identifier", + "src": "11520:11:1" + } + ], + "id": 1387, + "name": "FunctionCall", + "src": "11512:20:1" + } + ], + "id": 1388, + "name": "FunctionCall", + "src": "11504:29:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes32", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bytes32)" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": null + }, + "id": 1389, + "name": "ElementaryTypeName", + "src": "11535:7:1" + } + ], + "id": 1390, + "name": "ElementaryTypeNameExpression", + "src": "11535:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": null + }, + "id": 1391, + "name": "ElementaryTypeName", + "src": "11543:7:1" + } + ], + "id": 1392, + "name": "ElementaryTypeNameExpression", + "src": "11543:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1393, + "name": "Identifier", + "src": "11551:3:1" + } + ], + "id": 1394, + "name": "MemberAccess", + "src": "11551:10:1" + } + ], + "id": 1395, + "name": "FunctionCall", + "src": "11543:19:1" + } + ], + "id": 1396, + "name": "FunctionCall", + "src": "11535:28:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1316, + "type": "bytes32", + "value": "recipient" + }, + "id": 1397, + "name": "Identifier", + "src": "11565:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1343, + "type": "uint256", + "value": "transfer_amount" + }, + "id": 1398, + "name": "Identifier", + "src": "11576:15:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1320, + "type": "uint32", + "value": "nonce" + }, + "id": 1399, + "name": "Identifier", + "src": "11593:5:1" + } + ], + "id": 1400, + "name": "FunctionCall", + "src": "11461:138:1" + } + ], + "id": 1401, + "name": "EmitStatement", + "src": "11456:143:1" } - }, - "nodeType": "ModifierInvocation", - "src": "9513:12:1" + ], + "id": 1402, + "name": "Block", + "src": "10970:636:1" } ], - "name": "lockETH", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1190, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1185, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1237, - "src": "9424:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1184, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9424:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1187, - "mutability": "mutable", - "name": "target_chain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1237, - "src": "9451:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1186, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "9451:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1189, - "mutability": "mutable", - "name": "nonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1237, - "src": "9479:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 1188, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "9479:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9414:83:1" - }, - "returnParameters": { - "id": 1193, - "nodeType": "ParameterList", - "parameters": [], - "src": "9526:0:1" - }, - "scope": 1254, - "src": "9398:462:1", - "stateMutability": "payable", - "virtual": false, - "visibility": "public" + "id": 1403, + "name": "FunctionDefinition", + "src": "10842:764:1" }, { - "body": { - "id": 1244, - "nodeType": "Block", - "src": "9894:57:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "fallback", + "modifiers": [null], + "name": "", + "overrides": null, + "scope": 1420, + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1404, + "name": "ParameterList", + "src": "11620:2:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1405, + "name": "ParameterList", + "src": "11640:0:1" + }, + { + "children": [ + { + "children": [ { - "argumentTypes": null, - "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", - "id": 1241, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9902:46:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", - "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false }, - "value": "please use lockETH to transfer ETH to Solana" + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", + "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" + } + ], + "overloadedDeclarations": [-19, -19], + "referencedDeclaration": -19, + "type": "function (string memory) pure", + "value": "revert" + }, + "id": 1406, + "name": "Identifier", + "src": "11641:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"please use lockETH to transfer ETH to Solana\"", + "value": "please use lockETH to transfer ETH to Solana" + }, + "id": 1407, + "name": "Literal", + "src": "11648:46:1" + } + ], + "id": 1408, + "name": "FunctionCall", + "src": "11641:54:1" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", - "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" - } - ], - "id": 1240, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [-19, -19], - "referencedDeclaration": -19, - "src": "9895:6:1", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 1242, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9895:54:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1243, - "nodeType": "ExpressionStatement", - "src": "9895:54:1" - } - ] - }, - "documentation": null, - "id": 1245, - "implemented": true, - "kind": "fallback", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1238, - "nodeType": "ParameterList", - "parameters": [], - "src": "9874:2:1" - }, - "returnParameters": { - "id": 1239, - "nodeType": "ParameterList", - "parameters": [], - "src": "9894:0:1" - }, - "scope": 1254, - "src": "9866:85:1", - "stateMutability": "payable", - "virtual": false, - "visibility": "external" + "id": 1409, + "name": "ExpressionStatement", + "src": "11641:54:1" + } + ], + "id": 1410, + "name": "Block", + "src": "11640:57:1" + } + ], + "id": 1411, + "name": "FunctionDefinition", + "src": "11612:85:1" }, { - "body": { - "id": 1252, - "nodeType": "Block", - "src": "9984:57:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "receive", + "modifiers": [null], + "name": "", + "overrides": null, + "scope": 1420, + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1412, + "name": "ParameterList", + "src": "11710:2:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1413, + "name": "ParameterList", + "src": "11730:0:1" + }, + { + "children": [ + { + "children": [ { - "argumentTypes": null, - "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", - "id": 1249, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9992:46:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", - "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false }, - "value": "please use lockETH to transfer ETH to Solana" + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", + "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" + } + ], + "overloadedDeclarations": [-19, -19], + "referencedDeclaration": -19, + "type": "function (string memory) pure", + "value": "revert" + }, + "id": 1414, + "name": "Identifier", + "src": "11731:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"please use lockETH to transfer ETH to Solana\"", + "value": "please use lockETH to transfer ETH to Solana" + }, + "id": 1415, + "name": "Literal", + "src": "11738:46:1" + } + ], + "id": 1416, + "name": "FunctionCall", + "src": "11731:54:1" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", - "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" - } - ], - "id": 1248, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [-19, -19], - "referencedDeclaration": -19, - "src": "9985:6:1", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 1250, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9985:54:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1251, - "nodeType": "ExpressionStatement", - "src": "9985:54:1" - } - ] - }, - "documentation": null, - "id": 1253, - "implemented": true, - "kind": "receive", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1246, - "nodeType": "ParameterList", - "parameters": [], - "src": "9964:2:1" - }, - "returnParameters": { - "id": 1247, - "nodeType": "ParameterList", - "parameters": [], - "src": "9984:0:1" - }, - "scope": 1254, - "src": "9957:84:1", - "stateMutability": "payable", - "virtual": false, - "visibility": "external" + "id": 1417, + "name": "ExpressionStatement", + "src": "11731:54:1" + } + ], + "id": 1418, + "name": "Block", + "src": "11730:57:1" + } + ], + "id": 1419, + "name": "FunctionDefinition", + "src": "11703:84:1" } ], - "scope": 1266, - "src": "502:9541:1" + "id": 1420, + "name": "ContractDefinition", + "src": "463:11326:1" }, { - "abstract": false, - "baseContracts": [ + "attributes": { + "abstract": false, + "contractDependencies": [3086], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "linearizedBaseContracts": [1431, 3086], + "name": "WETH", + "scope": 1432 + }, + "children": [ { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 1255, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2615, - "src": "10064:6:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2615", - "typeString": "contract IERC20" + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IERC20", + "referencedDeclaration": 3086, + "type": "contract IERC20" + }, + "id": 1421, + "name": "UserDefinedTypeName", + "src": "11810:6:1" } - }, - "id": 1256, - "nodeType": "InheritanceSpecifier", - "src": "10064:6:1" - } - ], - "contractDependencies": [2615], - "contractKind": "interface", - "documentation": null, - "fullyImplemented": false, - "id": 1265, - "linearizedBaseContracts": [1265, 2615], - "name": "WETH", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": null, - "documentation": null, - "functionSelector": "d0e30db0", - "id": 1259, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "deposit", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1257, - "nodeType": "ParameterList", - "parameters": [], - "src": "10093:2:1" - }, - "returnParameters": { - "id": 1258, - "nodeType": "ParameterList", - "parameters": [], - "src": "10112:0:1" - }, - "scope": 1265, - "src": "10077:36:1", - "stateMutability": "payable", - "virtual": false, - "visibility": "external" + ], + "id": 1422, + "name": "InheritanceSpecifier", + "src": "11810:6:1" }, { - "body": null, - "documentation": null, - "functionSelector": "2e1a7d4d", - "id": 1264, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "withdraw", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1262, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1261, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1264, - "src": "10137:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1260, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10137:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "10136:16:1" + "attributes": { + "body": null, + "documentation": null, + "functionSelector": "d0e30db0", + "implemented": false, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "deposit", + "overrides": null, + "scope": 1431, + "stateMutability": "payable", + "virtual": false, + "visibility": "external" }, - "returnParameters": { - "id": 1263, - "nodeType": "ParameterList", - "parameters": [], - "src": "10161:0:1" + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1423, + "name": "ParameterList", + "src": "11839:2:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1424, + "name": "ParameterList", + "src": "11858:0:1" + } + ], + "id": 1425, + "name": "FunctionDefinition", + "src": "11823:36:1" + }, + { + "attributes": { + "body": null, + "documentation": null, + "functionSelector": "2e1a7d4d", + "implemented": false, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "withdraw", + "overrides": null, + "scope": 1431, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" }, - "scope": 1265, - "src": "10119:43:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 1430, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1426, + "name": "ElementaryTypeName", + "src": "11883:7:1" + } + ], + "id": 1427, + "name": "VariableDeclaration", + "src": "11883:14:1" + } + ], + "id": 1428, + "name": "ParameterList", + "src": "11882:16:1" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1429, + "name": "ParameterList", + "src": "11907:0:1" + } + ], + "id": 1430, + "name": "FunctionDefinition", + "src": "11865:43:1" } ], - "scope": 1266, - "src": "10046:118:1" + "id": 1431, + "name": "ContractDefinition", + "src": "11792:118:1" } ], - "src": "103:10062:1" + "id": 1432, + "name": "SourceUnit", + "src": "64:11847:1" }, "compiler": { "name": "solc", "version": "0.6.12+commit.27d51765.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.2.3", - "updatedAt": "2020-08-30T09:23:52.322Z", + "schemaVersion": "3.3.4", + "updatedAt": "2021-04-12T21:53:29.885Z", "devdoc": { "kind": "dev", "methods": {}, diff --git a/packages/bridge/contracts/WrappedAsset.json b/packages/bridge/contracts/WrappedAsset.json index aa83a4e..451168f 100644 --- a/packages/bridge/contracts/WrappedAsset.json +++ b/packages/bridge/contracts/WrappedAsset.json @@ -114,6 +114,11 @@ "internalType": "bytes32", "name": "_assetAddress", "type": "bytes32" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" } ], "name": "initialize", @@ -378,70 +383,70 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assetAddress\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assetChain\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_assetChain\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_assetAddress\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol\":\"WrappedAsset\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol\":{\"keccak256\":\"0x029a9b6e1df05a76c4c09570bf403eb91a2df33acdb0b7414e950f35fa240b97\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://a1d5d79ed2fdbe41c9eb88971ab0c7677b66579d6ef322a5eb7b23bf8fc9f891\",\"dweb:/ipfs/QmPRZWXa3hx87fJ9u14rDxZ7mYXL2EjQHcDmC2jYZEDMNW\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xdfb4f812600ba4ce6738c35584ceb8c9433472583051b48ba5b1f66cb758a498\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df02dffe1c1de089d9b4f6192f0dcf464526f2230f420b3deec4645e0cdd2bff\",\"dweb:/ipfs/QmcqXGAU3KJqwrgUVoGJ2W8osomhSJ4R5kdsRpbuW3fELS\"]}},\"version\":1}", - "bytecode": "0x60806040526012600860006101000a81548160ff021916908360ff16021790555034801561002c57600080fd5b50611b0b8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806339509351116100a25780639dc29fac116100715780639dc29fac146104ec578063a457c2d71461053a578063a9059cbb1461059e578063dd62ed3e14610602578063e78cea921461067a57610116565b8063395093511461035f57806340c10f19146103c357806370a082311461041157806395d89b411461046957610116565b8063158ef93e116100e9578063158ef93e1461025e57806318160ddd1461027e5780631ba46cfd1461029c57806323b872dd146102ba578063313ce5671461033e57610116565b8063026b05391461011b57806302a095851461013c57806306fdde0314610177578063095ea7b3146101fa575b600080fd5b6101236106ae565b604051808260ff16815260200191505060405180910390f35b6101756004803603604081101561015257600080fd5b81019080803560ff169060200190929190803590602001909291905050506106bf565b005b61017f610877565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101bf5780820151818401526020810190506101a4565b50505050905090810190601f1680156101ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102466004803603604081101561021057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610919565b60405180821515815260200191505060405180910390f35b610266610937565b60405180821515815260200191505060405180910390f35b61028661094a565b6040518082815260200191505060405180910390f35b6102a4610954565b6040518082815260200191505060405180910390f35b610326600480360360608110156102d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061095a565b60405180821515815260200191505060405180910390f35b610346610a33565b604051808260ff16815260200191505060405180910390f35b6103ab6004803603604081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a4a565b60405180821515815260200191505060405180910390f35b61040f600480360360408110156103d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610afd565b005b6104536004803603602081101561042757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bb1565b6040518082815260200191505060405180910390f35b610471610bfa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104b1578082015181840152602081019050610496565b50505050905090810190601f1680156104de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105386004803603604081101561050257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c9c565b005b6105866004803603604081101561055057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d50565b60405180821515815260200191505060405180910390f35b6105ea600480360360408110156105b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e1d565b60405180821515815260200191505060405180910390f35b6106646004803603604081101561061857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e3b565b6040518082815260200191505060405180910390f35b610682610ec2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900460ff1681565b600260009054906101000a900460ff1615610742576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c726561647920696e697469616c697a65640000000000000000000000000081525060200191505060405180910390fd5b816000806101000a81548160ff021916908360ff1602179055508060018190555033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260006101000a81548160ff0219169083151502179055506040518060400160405280601081526020017f576f726d686f6c652057726170706564000000000000000000000000000000008152506006908051906020019061080a9291906118aa565b506040518060400160405280600381526020017f5757540000000000000000000000000000000000000000000000000000000000815250600790805190602001906108569291906118aa565b506012600860006101000a81548160ff021916908360ff1602179055505050565b606060068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561090f5780601f106108e45761010080835404028352916020019161090f565b820191906000526020600020905b8154815290600101906020018083116108f257829003601f168201915b5050505050905090565b600061092d610926610ee8565b8484610ef0565b6001905092915050565b600260009054906101000a900460ff1681565b6000600554905090565b60015481565b60006109678484846110e7565b610a2884610973610ee8565b610a23856040518060600160405280602881526020016119d560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109d9610ee8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef0565b600190509392505050565b6000600860009054906101000a900460ff16905090565b6000610af3610a57610ee8565b84610aee8560046000610a68610ee8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b610ef0565b6001905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611a8c6025913960400191505060405180910390fd5b610bad82826114e9565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c925780601f10610c6757610100808354040283529160200191610c92565b820191906000526020600020905b815481529060010190602001808311610c7557829003601f168201915b5050505050905090565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611a436025913960400191505060405180910390fd5b610d4c82826116a6565b5050565b6000610e13610d5d610ee8565b84610e0e85604051806060016040528060258152602001611ab16025913960046000610d87610ee8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef0565b6001905092915050565b6000610e31610e2a610ee8565b84846110e7565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611a686024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ffc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061198d6022913960400191505060405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561116d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611a1e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806119486023913960400191505060405180910390fd5b61125f816040518060600160405280602681526020016119af60269139600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112f481600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061144e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114135780820151818401526020810190506113f8565b50505050905090810190601f1680156114405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6115a18160055461146190919063ffffffff16565b6005819055506115f981600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561172c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806119fd6021913960400191505060405180910390fd5b6117988160405180606001604052806022815260200161196b60229139600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117f08160055461186090919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006118a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113a1565b905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118eb57805160ff1916838001178555611919565b82800160010185558215611919579182015b828111156119185782518255916020019190600101906118fd565b5b509050611926919061192a565b5090565b5b8082111561194357600081600090555060010161192b565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573736275726e2063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736d696e742063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ddb37f832d1d6552bf2def7f3430b7107363118444ef3991a86760397776af5d64736f6c634300060c0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c806339509351116100a25780639dc29fac116100715780639dc29fac146104ec578063a457c2d71461053a578063a9059cbb1461059e578063dd62ed3e14610602578063e78cea921461067a57610116565b8063395093511461035f57806340c10f19146103c357806370a082311461041157806395d89b411461046957610116565b8063158ef93e116100e9578063158ef93e1461025e57806318160ddd1461027e5780631ba46cfd1461029c57806323b872dd146102ba578063313ce5671461033e57610116565b8063026b05391461011b57806302a095851461013c57806306fdde0314610177578063095ea7b3146101fa575b600080fd5b6101236106ae565b604051808260ff16815260200191505060405180910390f35b6101756004803603604081101561015257600080fd5b81019080803560ff169060200190929190803590602001909291905050506106bf565b005b61017f610877565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101bf5780820151818401526020810190506101a4565b50505050905090810190601f1680156101ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102466004803603604081101561021057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610919565b60405180821515815260200191505060405180910390f35b610266610937565b60405180821515815260200191505060405180910390f35b61028661094a565b6040518082815260200191505060405180910390f35b6102a4610954565b6040518082815260200191505060405180910390f35b610326600480360360608110156102d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061095a565b60405180821515815260200191505060405180910390f35b610346610a33565b604051808260ff16815260200191505060405180910390f35b6103ab6004803603604081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a4a565b60405180821515815260200191505060405180910390f35b61040f600480360360408110156103d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610afd565b005b6104536004803603602081101561042757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bb1565b6040518082815260200191505060405180910390f35b610471610bfa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104b1578082015181840152602081019050610496565b50505050905090810190601f1680156104de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105386004803603604081101561050257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c9c565b005b6105866004803603604081101561055057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d50565b60405180821515815260200191505060405180910390f35b6105ea600480360360408110156105b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e1d565b60405180821515815260200191505060405180910390f35b6106646004803603604081101561061857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e3b565b6040518082815260200191505060405180910390f35b610682610ec2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900460ff1681565b600260009054906101000a900460ff1615610742576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c726561647920696e697469616c697a65640000000000000000000000000081525060200191505060405180910390fd5b816000806101000a81548160ff021916908360ff1602179055508060018190555033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260006101000a81548160ff0219169083151502179055506040518060400160405280601081526020017f576f726d686f6c652057726170706564000000000000000000000000000000008152506006908051906020019061080a9291906118aa565b506040518060400160405280600381526020017f5757540000000000000000000000000000000000000000000000000000000000815250600790805190602001906108569291906118aa565b506012600860006101000a81548160ff021916908360ff1602179055505050565b606060068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561090f5780601f106108e45761010080835404028352916020019161090f565b820191906000526020600020905b8154815290600101906020018083116108f257829003601f168201915b5050505050905090565b600061092d610926610ee8565b8484610ef0565b6001905092915050565b600260009054906101000a900460ff1681565b6000600554905090565b60015481565b60006109678484846110e7565b610a2884610973610ee8565b610a23856040518060600160405280602881526020016119d560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109d9610ee8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef0565b600190509392505050565b6000600860009054906101000a900460ff16905090565b6000610af3610a57610ee8565b84610aee8560046000610a68610ee8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b610ef0565b6001905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611a8c6025913960400191505060405180910390fd5b610bad82826114e9565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c925780601f10610c6757610100808354040283529160200191610c92565b820191906000526020600020905b815481529060010190602001808311610c7557829003601f168201915b5050505050905090565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611a436025913960400191505060405180910390fd5b610d4c82826116a6565b5050565b6000610e13610d5d610ee8565b84610e0e85604051806060016040528060258152602001611ab16025913960046000610d87610ee8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef0565b6001905092915050565b6000610e31610e2a610ee8565b84846110e7565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611a686024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ffc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061198d6022913960400191505060405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561116d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611a1e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806119486023913960400191505060405180910390fd5b61125f816040518060600160405280602681526020016119af60269139600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112f481600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061144e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114135780820151818401526020810190506113f8565b50505050905090810190601f1680156114405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6115a18160055461146190919063ffffffff16565b6005819055506115f981600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561172c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806119fd6021913960400191505060405180910390fd5b6117988160405180606001604052806022815260200161196b60229139600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117f08160055461186090919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006118a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113a1565b905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118eb57805160ff1916838001178555611919565b82800160010185558215611919579182015b828111156119185782518255916020019190600101906118fd565b5b509050611926919061192a565b5090565b5b8082111561194357600081600090555060010161192b565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573736275726e2063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736d696e742063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ddb37f832d1d6552bf2def7f3430b7107363118444ef3991a86760397776af5d64736f6c634300060c0033", + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assetAddress\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assetChain\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_assetChain\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_assetAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol\":\"WrappedAsset\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol\":{\"keccak256\":\"0x1aca747b823c4d8492ae379cfd9495e8ff19726302d943da56b2bb71aebecc73\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://716c755b41c76deb60297664878f07e0972867918fde13c20c196263d3daa554\",\"dweb:/ipfs/QmbrxvDYfcgSjBBnDdXyZJcwd8pYyyrQhYqY5h6DaxWKcy\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x9486045e189facd2e868ece35249872598ef03f1087fb6fa4d1161842daa2287\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77c3a04ef8453788b14b1ebbc24dd3f0a18ceb2615cd156aac949a611e552af8\",\"dweb:/ipfs/QmcmqWGguRM3iLuF57tcyrN3F6EA63kzeNkDfQuteBnurr\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}", + "bytecode": "0x60806040526012600760006101000a81548160ff021916908360ff16021790555034801561002c57600080fd5b50611e998061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806340c10f19116100a2578063a457c2d711610071578063a457c2d7146104ff578063a7a2d3fb14610563578063a9059cbb146105ab578063dd62ed3e1461060f578063e78cea921461068757610116565b806340c10f191461038857806370a08231146103d657806395d89b411461042e5780639dc29fac146104b157610116565b806318160ddd116100e957806318160ddd146102435780631ba46cfd1461026157806323b872dd1461027f578063313ce56714610303578063395093511461032457610116565b8063026b05391461011b57806306fdde031461013c578063095ea7b3146101bf578063158ef93e14610223575b600080fd5b6101236106bb565b604051808260ff16815260200191505060405180910390f35b6101446106cc565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610184578082015181840152602081019050610169565b50505050905090810190601f1680156101b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020b600480360360408110156101d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610800565b60405180821515815260200191505060405180910390f35b61022b61081e565b60405180821515815260200191505060405180910390f35b61024b610831565b6040518082815260200191505060405180910390f35b61026961083b565b6040518082815260200191505060405180910390f35b6102eb6004803603606081101561029557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610841565b60405180821515815260200191505060405180910390f35b61030b61091a565b604051808260ff16815260200191505060405180910390f35b6103706004803603604081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610931565b60405180821515815260200191505060405180910390f35b6103d46004803603604081101561039e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e4565b005b610418600480360360208110156103ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a98565b6040518082815260200191505060405180910390f35b610436610ae1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561047657808201518184015260208101905061045b565b50505050905090810190601f1680156104a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104fd600480360360408110156104c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b83565b005b61054b6004803603604081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c37565b60405180821515815260200191505060405180910390f35b6105a96004803603606081101561057957600080fd5b81019080803560ff16906020019092919080359060200190929190803560ff169060200190929190505050610d04565b005b6105f7600480360360408110156105c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e70565b60405180821515815260200191505060405180910390f35b6106716004803603604081101561062557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e8e565b6040518082815260200191505060405180910390f35b61068f610f15565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900460ff1681565b60606106e760008054906101000a900460ff1660ff16610f3b565b6106ef61107f565b60405160200180807f576f726d686f6c652057726170706564202d200000000000000000000000000081525060130183805190602001908083835b6020831061074d578051825260208201915060208101905060208303925061072a565b6001836020036101000a038019825116818451168082178552505050505050905001807f2d0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b602083106107c657805182526020820191506020810190506020830392506107a3565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905090565b600061081461080d611243565b848461124b565b6001905092915050565b600260009054906101000a900460ff1681565b6000600554905090565b60015481565b600061084e848484611442565b61090f8461085a611243565b61090a85604051806060016040528060288152602001611d6360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c0611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b61124b565b600190509392505050565b6000600760009054906101000a900460ff16905090565b60006109da61093e611243565b846109d5856004600061094f611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b690919063ffffffff16565b61124b565b6001905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611e1a6025913960400191505060405180910390fd5b610a94828261183e565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b795780601f10610b4e57610100808354040283529160200191610b79565b820191906000526020600020905b815481529060010190602001808311610b5c57829003601f168201915b5050505050905090565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611dd16025913960400191505060405180910390fd5b610c3382826119fb565b5050565b6000610cfa610c44611243565b84610cf585604051806060016040528060258152602001611e3f6025913960046000610c6e611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b61124b565b6001905092915050565b600260009054906101000a900460ff1615610d87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c726561647920696e697469616c697a65640000000000000000000000000081525060200191505060405180910390fd5b826000806101000a81548160ff021916908360ff1602179055508160018190555033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260006101000a81548160ff0219169083151502179055506040518060400160405280600381526020017f575754000000000000000000000000000000000000000000000000000000000081525060069080519060200190610e4f929190611c38565b5080600760006101000a81548160ff021916908360ff160217905550505050565b6000610e84610e7d611243565b8484611442565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000821415610f83576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061107a565b600082905060005b60008214610fad578080600101915050600a8281610fa557fe5b049150610f8b565b60608167ffffffffffffffff81118015610fc657600080fd5b506040519080825280601f01601f191660200182016040528015610ff95781602001600182028036833780820191505090505b50905060006001830390505b6000861461107257600a868161101757fe5b0660300160f81b8282806001900393508151811061103157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a868161106a57fe5b049550611005565b819450505050505b919050565b6060806040518060400160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152509050600060015490506060600260200260020160ff1667ffffffffffffffff811180156110e457600080fd5b506040519080825280601f01601f1916602001820160405280156111175781602001600182028036833780820191505090505b50905060005b602060ff168110156112395783600484836020811061113857fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff168151811061117057fe5b602001015160f81c60f81b82600283028151811061118a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535083600f60f81b8483602081106111cb57fe5b1a60f81b1660f81c60ff16815181106111e057fe5b602001015160f81c60f81b8260028302600101815181106111fd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061111d565b5080935050505090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611df66024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611357576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611d1b6022913960400191505060405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611dac6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561154e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611cd66023913960400191505060405180910390fd5b6115ba81604051806060016040528060268152602001611d3d60269139600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061164f81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b690919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561176e578082015181840152602081019050611753565b50505050905090810190601f16801561179b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600080828401905083811015611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6118f6816005546117b690919063ffffffff16565b60058190555061194e81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b690919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611d8b6021913960400191505060405180910390fd5b611aed81604051806060016040528060228152602001611cf960229139600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b4581600554611bb590919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600082821115611c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c7957805160ff1916838001178555611ca7565b82800160010185558215611ca7579182015b82811115611ca6578251825591602001919060010190611c8b565b5b509050611cb49190611cb8565b5090565b5b80821115611cd1576000816000905550600101611cb9565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573736275726e2063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736d696e742063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b3a2ff5f0503f2258e143f986f075a1cf9f8ce968a2954f3953e79c45d383ede64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c806340c10f19116100a2578063a457c2d711610071578063a457c2d7146104ff578063a7a2d3fb14610563578063a9059cbb146105ab578063dd62ed3e1461060f578063e78cea921461068757610116565b806340c10f191461038857806370a08231146103d657806395d89b411461042e5780639dc29fac146104b157610116565b806318160ddd116100e957806318160ddd146102435780631ba46cfd1461026157806323b872dd1461027f578063313ce56714610303578063395093511461032457610116565b8063026b05391461011b57806306fdde031461013c578063095ea7b3146101bf578063158ef93e14610223575b600080fd5b6101236106bb565b604051808260ff16815260200191505060405180910390f35b6101446106cc565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610184578082015181840152602081019050610169565b50505050905090810190601f1680156101b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020b600480360360408110156101d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610800565b60405180821515815260200191505060405180910390f35b61022b61081e565b60405180821515815260200191505060405180910390f35b61024b610831565b6040518082815260200191505060405180910390f35b61026961083b565b6040518082815260200191505060405180910390f35b6102eb6004803603606081101561029557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610841565b60405180821515815260200191505060405180910390f35b61030b61091a565b604051808260ff16815260200191505060405180910390f35b6103706004803603604081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610931565b60405180821515815260200191505060405180910390f35b6103d46004803603604081101561039e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e4565b005b610418600480360360208110156103ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a98565b6040518082815260200191505060405180910390f35b610436610ae1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561047657808201518184015260208101905061045b565b50505050905090810190601f1680156104a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104fd600480360360408110156104c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b83565b005b61054b6004803603604081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c37565b60405180821515815260200191505060405180910390f35b6105a96004803603606081101561057957600080fd5b81019080803560ff16906020019092919080359060200190929190803560ff169060200190929190505050610d04565b005b6105f7600480360360408110156105c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e70565b60405180821515815260200191505060405180910390f35b6106716004803603604081101561062557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e8e565b6040518082815260200191505060405180910390f35b61068f610f15565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900460ff1681565b60606106e760008054906101000a900460ff1660ff16610f3b565b6106ef61107f565b60405160200180807f576f726d686f6c652057726170706564202d200000000000000000000000000081525060130183805190602001908083835b6020831061074d578051825260208201915060208101905060208303925061072a565b6001836020036101000a038019825116818451168082178552505050505050905001807f2d0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b602083106107c657805182526020820191506020810190506020830392506107a3565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905090565b600061081461080d611243565b848461124b565b6001905092915050565b600260009054906101000a900460ff1681565b6000600554905090565b60015481565b600061084e848484611442565b61090f8461085a611243565b61090a85604051806060016040528060288152602001611d6360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c0611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b61124b565b600190509392505050565b6000600760009054906101000a900460ff16905090565b60006109da61093e611243565b846109d5856004600061094f611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b690919063ffffffff16565b61124b565b6001905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611e1a6025913960400191505060405180910390fd5b610a94828261183e565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b795780601f10610b4e57610100808354040283529160200191610b79565b820191906000526020600020905b815481529060010190602001808311610b5c57829003601f168201915b5050505050905090565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611dd16025913960400191505060405180910390fd5b610c3382826119fb565b5050565b6000610cfa610c44611243565b84610cf585604051806060016040528060258152602001611e3f6025913960046000610c6e611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b61124b565b6001905092915050565b600260009054906101000a900460ff1615610d87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c726561647920696e697469616c697a65640000000000000000000000000081525060200191505060405180910390fd5b826000806101000a81548160ff021916908360ff1602179055508160018190555033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260006101000a81548160ff0219169083151502179055506040518060400160405280600381526020017f575754000000000000000000000000000000000000000000000000000000000081525060069080519060200190610e4f929190611c38565b5080600760006101000a81548160ff021916908360ff160217905550505050565b6000610e84610e7d611243565b8484611442565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000821415610f83576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061107a565b600082905060005b60008214610fad578080600101915050600a8281610fa557fe5b049150610f8b565b60608167ffffffffffffffff81118015610fc657600080fd5b506040519080825280601f01601f191660200182016040528015610ff95781602001600182028036833780820191505090505b50905060006001830390505b6000861461107257600a868161101757fe5b0660300160f81b8282806001900393508151811061103157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a868161106a57fe5b049550611005565b819450505050505b919050565b6060806040518060400160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152509050600060015490506060600260200260020160ff1667ffffffffffffffff811180156110e457600080fd5b506040519080825280601f01601f1916602001820160405280156111175781602001600182028036833780820191505090505b50905060005b602060ff168110156112395783600484836020811061113857fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff168151811061117057fe5b602001015160f81c60f81b82600283028151811061118a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535083600f60f81b8483602081106111cb57fe5b1a60f81b1660f81c60ff16815181106111e057fe5b602001015160f81c60f81b8260028302600101815181106111fd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061111d565b5080935050505090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611df66024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611357576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611d1b6022913960400191505060405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611dac6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561154e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611cd66023913960400191505060405180910390fd5b6115ba81604051806060016040528060268152602001611d3d60269139600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061164f81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b690919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561176e578082015181840152602081019050611753565b50505050905090810190601f16801561179b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600080828401905083811015611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6118f6816005546117b690919063ffffffff16565b60058190555061194e81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b690919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611d8b6021913960400191505060405180910390fd5b611aed81604051806060016040528060228152602001611cf960229139600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b4581600554611bb590919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600082821115611c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c7957805160ff1916838001178555611ca7565b82800160010185558215611ca7579182015b82811115611ca6578251825591602001919060010190611c8b565b5b509050611cb49190611cb8565b5090565b5b80821115611cd1576000816000905550600101611cb9565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573736275726e2063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736d696e742063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b3a2ff5f0503f2258e143f986f075a1cf9f8ce968a2954f3953e79c45d383ede64736f6c634300060c0033", "immutableReferences": {}, - "sourceMap": "304:9061:3:-:0;;;1662:2;1636:28;;;;;;;;;;;;;;;;;;;;304:9061;;;;;;;;;;;;;;;;", - "deployedSourceMap": "304:9061:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;351:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;470:373;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1730:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3750:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;413:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2773:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;380:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4368:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2632:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5072:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;849:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2929:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1924:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1031:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5766:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3249:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3471:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;442:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;351:23;;;;;;;;;;;;:::o;470:373::-;558:11;;;;;;;;;;;557:12;549:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:11;631:10;;:24;;;;;;;;;;;;;;;;;;680:13;665:12;:28;;;;712:10;703:6;;:19;;;;;;;;;;;;;;;;;;746:4;732:11;;:18;;;;;;;;;;;;;;;;;;761:26;;;;;;;;;;;;;;;;;:5;:26;;;;;;;;;;;;:::i;:::-;;797:15;;;;;;;;;;;;;;;;;:7;:15;;;;;;;;;;;;:::i;:::-;;834:2;822:9;;:14;;;;;;;;;;;;;;;;;;470:373;;:::o;1730:81::-;1767:13;1799:5;1792:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1730:81;:::o;3750:158::-;3825:4;3841:39;3850:12;:10;:12::i;:::-;3864:7;3873:6;3841:8;:39::i;:::-;3897:4;3890:11;;3750:158;;;;:::o;413:23::-;;;;;;;;;;;;;:::o;2773:98::-;2826:7;2852:12;;2845:19;;2773:98;:::o;380:27::-;;;;:::o;4368:309::-;4466:4;4482:36;4492:6;4500:9;4511:6;4482:9;:36::i;:::-;4528:121;4537:6;4545:12;:10;:12::i;:::-;4559:89;4597:6;4559:89;;;;;;;;;;;;;;;;;:11;:19;4571:6;4559:19;;;;;;;;;;;;;;;:33;4579:12;:10;:12::i;:::-;4559:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4528:8;:121::i;:::-;4666:4;4659:11;;4368:309;;;;;:::o;2632:81::-;2673:5;2697:9;;;;;;;;;;;2690:16;;2632:81;:::o;5072:207::-;5152:4;5168:83;5177:12;:10;:12::i;:::-;5191:7;5200:50;5239:10;5200:11;:25;5212:12;:10;:12::i;:::-;5200:25;;;;;;;;;;;;;;;:34;5226:7;5200:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5168:8;:83::i;:::-;5268:4;5261:11;;5072:207;;;;:::o;849:176::-;937:6;;;;;;;;;;;923:20;;:10;:20;;;915:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;996:22;1002:7;1011:6;996:5;:22::i;:::-;849:176;;:::o;2929:117::-;2995:7;3021:9;:18;3031:7;3021:18;;;;;;;;;;;;;;;;3014:25;;2929:117;;;:::o;1924:85::-;1963:13;1995:7;1988:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1924:85;:::o;1031:176::-;1119:6;;;;;;;;;;;1105:20;;:10;:20;;;1097:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1178:22;1184:7;1193:6;1178:5;:22::i;:::-;1031:176;;:::o;5766:258::-;5851:4;5867:129;5876:12;:10;:12::i;:::-;5890:7;5899:96;5938:15;5899:96;;;;;;;;;;;;;;;;;:11;:25;5911:12;:10;:12::i;:::-;5899:25;;;;;;;;;;;;;;;:34;5925:7;5899:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;5867:8;:129::i;:::-;6013:4;6006:11;;5766:258;;;;:::o;3249:164::-;3327:4;3343:42;3353:12;:10;:12::i;:::-;3367:9;3378:6;3343:9;:42::i;:::-;3402:4;3395:11;;3249:164;;;;:::o;3471:141::-;3552:7;3578:11;:18;3590:5;3578:18;;;;;;;;;;;;;;;:27;3597:7;3578:27;;;;;;;;;;;;;;;;3571:34;;3471:141;;;;:::o;442:21::-;;;;;;;;;;;;;:::o;590:104:4:-;643:15;677:10;670:17;;590:104;:::o;8620:332:3:-;8730:1;8713:19;;:5;:19;;;;8705:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8810:1;8791:21;;:7;:21;;;;8783:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8892:6;8862:11;:18;8874:5;8862:18;;;;;;;;;;;;;;;:27;8881:7;8862:27;;;;;;;;;;;;;;;:36;;;;8929:7;8913:32;;8922:5;8913:32;;;8938:6;8913:32;;;;;;;;;;;;;;;;;;8620:332;;;:::o;6498:464::-;6613:1;6595:20;;:6;:20;;;;6587:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6696:1;6675:23;;:9;:23;;;;6667:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6769;6791:6;6769:71;;;;;;;;;;;;;;;;;:9;:17;6779:6;6769:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6749:9;:17;6759:6;6749:17;;;;;;;;;;;;;;;:91;;;;6873:32;6898:6;6873:9;:20;6883:9;6873:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6850:9;:20;6860:9;6850:20;;;;;;;;;;;;;;;:55;;;;6937:9;6920:35;;6929:6;6920:35;;;6948:6;6920:35;;;;;;;;;;;;;;;;;;6498:464;;;:::o;1746:187:5:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;874:176::-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;7232:302:3:-;7326:1;7307:21;;:7;:21;;;;7299:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7390:24;7407:6;7390:12;;:16;;:24;;;;:::i;:::-;7375:12;:39;;;;7445:30;7468:6;7445:9;:18;7455:7;7445:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;7424:9;:18;7434:7;7424:18;;;;;;;;;;;;;;;:51;;;;7511:7;7490:37;;7507:1;7490:37;;;7520:6;7490:37;;;;;;;;;;;;;;;;;;7232:302;;:::o;7853:342::-;7947:1;7928:21;;:7;:21;;;;7920:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8019:68;8042:6;8019:68;;;;;;;;;;;;;;;;;:9;:18;8029:7;8019:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;7998:9;:18;8008:7;7998:18;;;;;;;;;;;;;;;:89;;;;8112:24;8129:6;8112:12;;:16;;:24;;;;:::i;:::-;8097:12;:39;;;;8177:1;8151:37;;8160:7;8151:37;;;8181:6;8151:37;;;;;;;;;;;;;;;;;;7853:342;;:::o;1321:134:5:-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1398:50;;1321:134;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "// contracts/WrappedAsset.sol\n// SPDX-License-Identifier: Apache 2\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/GSN/Context.sol\";\n\ncontract WrappedAsset is IERC20, Context {\n uint8 public assetChain;\n bytes32 public assetAddress;\n bool public initialized;\n address public bridge;\n\n function initialize(uint8 _assetChain, bytes32 _assetAddress) public {\n require(!initialized, \"already initialized\");\n // Set local fields\n assetChain = _assetChain;\n assetAddress = _assetAddress;\n bridge = msg.sender;\n initialized = true;\n\n _name = \"Wormhole Wrapped\";\n _symbol = \"WWT\";\n _decimals = 18;\n }\n\n function mint(address account, uint256 amount) external {\n require(msg.sender == bridge, \"mint can only be called by the bridge\");\n\n _mint(account, amount);\n }\n\n function burn(address account, uint256 amount) external {\n require(msg.sender == bridge, \"burn can only be called by the bridge\");\n\n _burn(account, amount);\n }\n\n // Taken from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol\n // Licensed under MIT\n\n using SafeMath for uint256;\n using Address for address;\n\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n uint8 private _decimals = 18;\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public override returns (bool) {\n _transfer(_msgSender(), recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public override returns (bool) {\n _approve(_msgSender(), spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20};\n *\n * Requirements:\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for ``sender``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(address sender, address recipient, uint256 amount) internal {\n require(sender != address(0), \"ERC20: transfer from the zero address\");\n require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\n _totalSupply = _totalSupply.sub(amount);\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n *\n * This is internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Sets {decimals} to a value other than the default one of 18.\n *\n * WARNING: This function should only be called from the constructor. Most\n * applications that interact with token contracts will not expect\n * {decimals} to ever change, and may work incorrectly if it does.\n */\n function _setupDecimals(uint8 decimals_) internal {\n _decimals = decimals_;\n }\n}\n", - "sourcePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol", + "sourceMap": "304:10137:2:-:0;;;1622:2;1596:28;;;;;;;;;;;;;;;;;;;;304:10137;;;;;;;;;;;;;;;;", + "deployedSourceMap": "304:10137:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;351:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1690:176;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4826:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;413:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3849:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;380:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5444:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3708:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6148:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;835:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4005:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3000:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1017:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6842:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;470:359;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4325:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4547:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;442:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;351:23;;;;;;;;;;;;:::o;1690:176::-;1727:13;1806:24;1819:10;;;;;;;;;;1806:24;;:12;:24::i;:::-;1837:20;:18;:20::i;:::-;1766:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1752:107;;1690:176;:::o;4826:158::-;4901:4;4917:39;4926:12;:10;:12::i;:::-;4940:7;4949:6;4917:8;:39::i;:::-;4973:4;4966:11;;4826:158;;;;:::o;413:23::-;;;;;;;;;;;;;:::o;3849:98::-;3902:7;3928:12;;3921:19;;3849:98;:::o;380:27::-;;;;:::o;5444:309::-;5542:4;5558:36;5568:6;5576:9;5587:6;5558:9;:36::i;:::-;5604:121;5613:6;5621:12;:10;:12::i;:::-;5635:89;5673:6;5635:89;;;;;;;;;;;;;;;;;:11;:19;5647:6;5635:19;;;;;;;;;;;;;;;:33;5655:12;:10;:12::i;:::-;5635:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5604:8;:121::i;:::-;5742:4;5735:11;;5444:309;;;;;:::o;3708:81::-;3749:5;3773:9;;;;;;;;;;;3766:16;;3708:81;:::o;6148:207::-;6228:4;6244:83;6253:12;:10;:12::i;:::-;6267:7;6276:50;6315:10;6276:11;:25;6288:12;:10;:12::i;:::-;6276:25;;;;;;;;;;;;;;;:34;6302:7;6276:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6244:8;:83::i;:::-;6344:4;6337:11;;6148:207;;;;:::o;835:176::-;923:6;;;;;;;;;;;909:20;;:10;:20;;;901:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;982:22;988:7;997:6;982:5;:22::i;:::-;835:176;;:::o;4005:117::-;4071:7;4097:9;:18;4107:7;4097:18;;;;;;;;;;;;;;;;4090:25;;4005:117;;;:::o;3000:85::-;3039:13;3071:7;3064:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3000:85;:::o;1017:176::-;1105:6;;;;;;;;;;;1091:20;;:10;:20;;;1083:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1164:22;1170:7;1179:6;1164:5;:22::i;:::-;1017:176;;:::o;6842:258::-;6927:4;6943:129;6952:12;:10;:12::i;:::-;6966:7;6975:96;7014:15;6975:96;;;;;;;;;;;;;;;;;:11;:25;6987:12;:10;:12::i;:::-;6975:25;;;;;;;;;;;;;;;:34;7001:7;6975:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6943:8;:129::i;:::-;7089:4;7082:11;;6842:258;;;;:::o;470:359::-;574:11;;;;;;;;;;;573:12;565:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;660:11;647:10;;:24;;;;;;;;;;;;;;;;;;696:13;681:12;:28;;;;728:10;719:6;;:19;;;;;;;;;;;;;;;;;;762:4;748:11;;:18;;;;;;;;;;;;;;;;;;777:15;;;;;;;;;;;;;;;;;:7;:15;;;;;;;;;;;;:::i;:::-;;814:8;802:9;;:20;;;;;;;;;;;;;;;;;;470:359;;;:::o;4325:164::-;4403:4;4419:42;4429:12;:10;:12::i;:::-;4443:9;4454:6;4419:9;:42::i;:::-;4478:4;4471:11;;4325:164;;;;:::o;4547:141::-;4628:7;4654:11;:18;4666:5;4654:18;;;;;;;;;;;;;;;:27;4673:7;4654:27;;;;;;;;;;;;;;;;4647:34;;4547:141;;;;:::o;442:21::-;;;;;;;;;;;;;:::o;1922:469::-;1976:27;2025:1;2019:2;:7;2015:48;;;2042:10;;;;;;;;;;;;;;;;;;;;;2015:48;2072:6;2081:2;2072:11;;2093:8;2111:66;2123:1;2118;:6;2111:66;;2140:5;;;;;;;2164:2;2159:7;;;;;;;;;2111:66;;;2186:17;2216:3;2206:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2186:34;;2230:6;2245:1;2239:3;:7;2230:16;;2256:100;2269:1;2263:2;:7;2256:100;;2319:2;2314;:7;;;;;;2309:2;:12;2298:25;;2286:4;2291:3;;;;;;;2286:9;;;;;;;;;;;:37;;;;;;;;;;;2343:2;2337:8;;;;;;;;;2256:100;;;2379:4;2365:19;;;;;;1922:469;;;;:::o;2447:440::-;2499:13;2524:21;:42;;;;;;;;;;;;;;;;;;;2576:12;2591;;2576:27;;2614:16;2661:1;2647:11;:15;2643:1;:19;2633:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2614:49;;2678:6;2673:180;2694:11;2690:15;;:1;:15;2673:180;;;2739:8;2770:1;2759:4;2764:1;2759:7;;;;;;;;;;:12;;;;;2753:19;;2748:25;;2739:35;;;;;;;;;;;;;;;;2726:3;2734:1;2730;:5;2726:10;;;;;;;;;;;:48;;;;;;;;;;;2805:8;2835:4;2825:14;;:4;2830:1;2825:7;;;;;;;;;;:14;2819:21;;2814:27;;2805:37;;;;;;;;;;;;;;;;2788:3;2800:1;2796;:5;2792:1;:9;2788:14;;;;;;;;;;;:54;;;;;;;;;;;2707:3;;;;;;;2673:180;;;;2876:3;2862:18;;;;;2447:440;:::o;598:104:9:-;651:15;685:10;678:17;;598:104;:::o;9696:332:2:-;9806:1;9789:19;;:5;:19;;;;9781:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9886:1;9867:21;;:7;:21;;;;9859:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9968:6;9938:11;:18;9950:5;9938:18;;;;;;;;;;;;;;;:27;9957:7;9938:27;;;;;;;;;;;;;;;:36;;;;10005:7;9989:32;;9998:5;9989:32;;;10014:6;9989:32;;;;;;;;;;;;;;;;;;9696:332;;;:::o;7574:464::-;7689:1;7671:20;;:6;:20;;;;7663:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7772:1;7751:23;;:9;:23;;;;7743:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7845;7867:6;7845:71;;;;;;;;;;;;;;;;;:9;:17;7855:6;7845:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7825:9;:17;7835:6;7825:17;;;;;;;;;;;;;;;:91;;;;7949:32;7974:6;7949:9;:20;7959:9;7949:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7926:9;:20;7936:9;7926:20;;;;;;;;;;;;;;;:55;;;;8013:9;7996:35;;8005:6;7996:35;;;8024:6;7996:35;;;;;;;;;;;;;;;;;;7574:464;;;:::o;5432:163:4:-;5518:7;5550:1;5545;:6;;5553:12;5537:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5587:1;5583;:5;5576:12;;5432:163;;;;;:::o;2690:175::-;2748:7;2767:9;2783:1;2779;:5;2767:17;;2807:1;2802;:6;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2850:8;;;2690:175;;;;:::o;8308:302:2:-;8402:1;8383:21;;:7;:21;;;;8375:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8466:24;8483:6;8466:12;;:16;;:24;;;;:::i;:::-;8451:12;:39;;;;8521:30;8544:6;8521:9;:18;8531:7;8521:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;8500:9;:18;8510:7;8500:18;;;;;;;;;;;;;;;:51;;;;8587:7;8566:37;;8583:1;8566:37;;;8596:6;8566:37;;;;;;;;;;;;;;;;;;8308:302;;:::o;8929:342::-;9023:1;9004:21;;:7;:21;;;;8996:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9095:68;9118:6;9095:68;;;;;;;;;;;;;;;;;:9;:18;9105:7;9095:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;9074:9;:18;9084:7;9074:18;;;;;;;;;;;;;;;:89;;;;9188:24;9205:6;9188:12;;:16;;:24;;;;:::i;:::-;9173:12;:39;;;;9253:1;9227:37;;9236:7;9227:37;;;9257:6;9227:37;;;;;;;;;;;;;;;;;;8929:342;;:::o;3136:155:4:-;3194:7;3226:1;3221;:6;;3213:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3283:1;3279;:5;3272:12;;3136:155;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "// contracts/WrappedAsset.sol\n// SPDX-License-Identifier: Apache 2\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/GSN/Context.sol\";\n\ncontract WrappedAsset is IERC20, Context {\n uint8 public assetChain;\n bytes32 public assetAddress;\n bool public initialized;\n address public bridge;\n\n function initialize(uint8 _assetChain, bytes32 _assetAddress, uint8 decimals) public {\n require(!initialized, \"already initialized\");\n // Set local fields\n assetChain = _assetChain;\n assetAddress = _assetAddress;\n bridge = msg.sender;\n initialized = true;\n\n _symbol = \"WWT\";\n _decimals = decimals;\n }\n\n function mint(address account, uint256 amount) external {\n require(msg.sender == bridge, \"mint can only be called by the bridge\");\n\n _mint(account, amount);\n }\n\n function burn(address account, uint256 amount) external {\n require(msg.sender == bridge, \"burn can only be called by the bridge\");\n\n _burn(account, amount);\n }\n\n // Taken from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol\n // Licensed under MIT\n\n using SafeMath for uint256;\n using Address for address;\n\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _symbol;\n uint8 private _decimals = 18;\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view returns (string memory) {\n return string(abi.encodePacked(\"Wormhole Wrapped - \", uintToString(assetChain), \"-\", assetAddressString()));\n }\n\n // https://ethereum.stackexchange.com/a/40977\n function uintToString(uint _i) internal pure returns (string memory _uintAsString) {\n if (_i == 0) {\n return \"0\";\n }\n uint j = _i;\n uint len;\n while (j != 0) {\n len++;\n j /= 10;\n }\n bytes memory bstr = new bytes(len);\n uint k = len - 1;\n while (_i != 0) {\n bstr[k--] = byte(uint8(48 + _i % 10));\n _i /= 10;\n }\n return string(bstr);\n }\n\n // https://ethereum.stackexchange.com/a/58341\n function assetAddressString() private view returns (string memory) {\n bytes memory alphabet = \"0123456789abcdef\";\n bytes32 data = assetAddress;\n\n bytes memory str = new bytes(2 + data.length * 2);\n for (uint i = 0; i < data.length; i++) {\n str[i * 2] = alphabet[uint(uint8(data[i] >> 4))];\n str[1 + i * 2] = alphabet[uint(uint8(data[i] & 0x0f))];\n }\n return string(str);\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public override returns (bool) {\n _transfer(_msgSender(), recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public override returns (bool) {\n _approve(_msgSender(), spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20};\n *\n * Requirements:\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for ``sender``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(address sender, address recipient, uint256 amount) internal {\n require(sender != address(0), \"ERC20: transfer from the zero address\");\n require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\n _totalSupply = _totalSupply.sub(amount);\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n *\n * This is internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Sets {decimals} to a value other than the default one of 18.\n *\n * WARNING: This function should only be called from the constructor. Most\n * applications that interact with token contracts will not expect\n * {decimals} to ever change, and may work incorrectly if it does.\n */\n function _setupDecimals(uint8 decimals_) internal {\n _decimals = decimals_;\n }\n}\n", + "sourcePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol", "ast": { - "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol", + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol", "exportedSymbols": { - "WrappedAsset": [1728] + "WrappedAsset": [2147] }, - "id": 1729, + "id": 2148, "license": "Apache 2", "nodeType": "SourceUnit", "nodes": [ { - "id": 1186, + "id": 1433, "literals": ["solidity", "^", "0.6", ".0"], "nodeType": "PragmaDirective", - "src": "67:23:3" + "src": "67:23:2" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "id": 1187, + "id": 1434, "nodeType": "ImportDirective", - "scope": 1729, - "sourceUnit": 2026, - "src": "92:56:3", + "scope": 2148, + "sourceUnit": 3087, + "src": "92:56:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", "file": "@openzeppelin/contracts/math/SafeMath.sol", - "id": 1188, + "id": 1435, "nodeType": "ImportDirective", - "scope": 1729, - "sourceUnit": 1948, - "src": "149:51:3", + "scope": 2148, + "sourceUnit": 2506, + "src": "149:51:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/Address.sol", "file": "@openzeppelin/contracts/utils/Address.sol", - "id": 1189, + "id": 1436, "nodeType": "ImportDirective", - "scope": 1729, - "sourceUnit": 2443, - "src": "201:51:3", + "scope": 2148, + "sourceUnit": 3596, + "src": "201:51:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/GSN/Context.sol", "file": "@openzeppelin/contracts/GSN/Context.sol", - "id": 1190, + "id": 1437, "nodeType": "ImportDirective", - "scope": 1729, - "sourceUnit": 1752, - "src": "253:49:3", + "scope": 2148, + "sourceUnit": 2151, + "src": "253:49:2", "symbolAliases": [], "unitAlias": "" }, @@ -452,58 +457,58 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1191, + "id": 1438, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2025, - "src": "329:6:3", + "referencedDeclaration": 3086, + "src": "329:6:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2025", + "typeIdentifier": "t_contract$_IERC20_$3086", "typeString": "contract IERC20" } }, - "id": 1192, + "id": 1439, "nodeType": "InheritanceSpecifier", - "src": "329:6:3" + "src": "329:6:2" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 1193, + "id": 1440, "name": "Context", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1751, - "src": "337:7:3", + "referencedDeclaration": 3618, + "src": "337:7:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$1751", + "typeIdentifier": "t_contract$_Context_$3618", "typeString": "contract Context" } }, - "id": 1194, + "id": 1441, "nodeType": "InheritanceSpecifier", - "src": "337:7:3" + "src": "337:7:2" } ], - "contractDependencies": [1751, 2025], + "contractDependencies": [3086, 3618], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 1728, - "linearizedBaseContracts": [1728, 1751, 2025], + "id": 2147, + "linearizedBaseContracts": [2147, 3618, 3086], "name": "WrappedAsset", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "functionSelector": "026b0539", - "id": 1196, + "id": 1443, "mutability": "mutable", "name": "assetChain", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1728, - "src": "351:23:3", + "scope": 2147, + "src": "351:23:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -511,10 +516,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1195, + "id": 1442, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "351:5:3", + "src": "351:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -526,13 +531,13 @@ { "constant": false, "functionSelector": "1ba46cfd", - "id": 1198, + "id": 1445, "mutability": "mutable", "name": "assetAddress", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1728, - "src": "380:27:3", + "scope": 2147, + "src": "380:27:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -540,10 +545,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1197, + "id": 1444, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "380:7:3", + "src": "380:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -555,13 +560,13 @@ { "constant": false, "functionSelector": "158ef93e", - "id": 1200, + "id": 1447, "mutability": "mutable", "name": "initialized", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1728, - "src": "413:23:3", + "scope": 2147, + "src": "413:23:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -569,10 +574,10 @@ "typeString": "bool" }, "typeName": { - "id": 1199, + "id": 1446, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "413:4:3", + "src": "413:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -584,13 +589,13 @@ { "constant": false, "functionSelector": "e78cea92", - "id": 1202, + "id": 1449, "mutability": "mutable", "name": "bridge", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1728, - "src": "442:21:3", + "scope": 2147, + "src": "442:21:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -598,10 +603,10 @@ "typeString": "address" }, "typeName": { - "id": 1201, + "id": 1448, "name": "address", "nodeType": "ElementaryTypeName", - "src": "442:7:3", + "src": "442:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -613,9 +618,9 @@ }, { "body": { - "id": 1244, + "id": 1489, "nodeType": "Block", - "src": "539:304:3", + "src": "555:274:2", "statements": [ { "expression": { @@ -623,7 +628,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1211, + "id": 1460, "isConstant": false, "isLValue": false, "isPure": false, @@ -631,15 +636,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "557:12:3", + "src": "573:12:2", "subExpression": { "argumentTypes": null, - "id": 1210, + "id": 1459, "name": "initialized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "558:11:3", + "referencedDeclaration": 1447, + "src": "574:11:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -653,14 +658,14 @@ { "argumentTypes": null, "hexValue": "616c726561647920696e697469616c697a6564", - "id": 1212, + "id": 1461, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "571:21:3", + "src": "587:21:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc", @@ -680,18 +685,18 @@ "typeString": "literal_string \"already initialized\"" } ], - "id": 1209, + "id": 1458, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "549:7:3", + "src": "565:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1213, + "id": 1462, "isConstant": false, "isLValue": false, "isPure": false, @@ -699,33 +704,33 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "549:44:3", + "src": "565:44:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1214, + "id": 1463, "nodeType": "ExpressionStatement", - "src": "549:44:3" + "src": "565:44:2" }, { "expression": { "argumentTypes": null, - "id": 1217, + "id": 1466, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1215, + "id": 1464, "name": "assetChain", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1196, - "src": "631:10:3", + "referencedDeclaration": 1443, + "src": "647:10:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -735,43 +740,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1216, + "id": 1465, "name": "_assetChain", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1204, - "src": "644:11:3", + "referencedDeclaration": 1451, + "src": "660:11:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "631:24:3", + "src": "647:24:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1218, + "id": 1467, "nodeType": "ExpressionStatement", - "src": "631:24:3" + "src": "647:24:2" }, { "expression": { "argumentTypes": null, - "id": 1221, + "id": 1470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1219, + "id": 1468, "name": "assetAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1198, - "src": "665:12:3", + "referencedDeclaration": 1445, + "src": "681:12:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -781,43 +786,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1220, + "id": 1469, "name": "_assetAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1206, - "src": "680:13:3", + "referencedDeclaration": 1453, + "src": "696:13:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "665:28:3", + "src": "681:28:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 1222, + "id": 1471, "nodeType": "ExpressionStatement", - "src": "665:28:3" + "src": "681:28:2" }, { "expression": { "argumentTypes": null, - "id": 1226, + "id": 1475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1223, + "id": 1472, "name": "bridge", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1202, - "src": "703:6:3", + "referencedDeclaration": 1449, + "src": "719:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -829,18 +834,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1224, + "id": 1473, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "712:3:3", + "src": "728:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1225, + "id": 1474, "isConstant": false, "isLValue": false, "isPure": false, @@ -848,38 +853,38 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "712:10:3", + "src": "728:10:2", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "703:19:3", + "src": "719:19:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1227, + "id": 1476, "nodeType": "ExpressionStatement", - "src": "703:19:3" + "src": "719:19:2" }, { "expression": { "argumentTypes": null, - "id": 1230, + "id": 1479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1228, + "id": 1477, "name": "initialized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "732:11:3", + "referencedDeclaration": 1447, + "src": "748:11:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -890,14 +895,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1229, + "id": 1478, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "746:4:3", + "src": "762:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -905,83 +910,32 @@ }, "value": "true" }, - "src": "732:18:3", + "src": "748:18:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1231, + "id": 1480, "nodeType": "ExpressionStatement", - "src": "732:18:3" + "src": "748:18:2" }, { "expression": { "argumentTypes": null, - "id": 1234, + "id": 1483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1232, - "name": "_name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1307, - "src": "761:5:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "576f726d686f6c652057726170706564", - "id": 1233, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "769:18:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_7fba8604b126ac0f54fd4def8e15fd26e2df8bb510be08aa6c2c8a7c813171ee", - "typeString": "literal_string \"Wormhole Wrapped\"" - }, - "value": "Wormhole Wrapped" - }, - "src": "761:26:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "id": 1235, - "nodeType": "ExpressionStatement", - "src": "761:26:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1236, + "id": 1481, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1309, - "src": "797:7:3", + "referencedDeclaration": 1552, + "src": "777:7:2", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -992,14 +946,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "575754", - "id": 1237, + "id": 1482, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "807:5:3", + "src": "787:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0d2d5a94d86195c9aab1dc351352ba0539c6da454bc9b63f5012e79c7d2d46e2", @@ -1007,32 +961,32 @@ }, "value": "WWT" }, - "src": "797:15:3", + "src": "777:15:2", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "id": 1239, + "id": 1484, "nodeType": "ExpressionStatement", - "src": "797:15:3" + "src": "777:15:2" }, { "expression": { "argumentTypes": null, - "id": 1242, + "id": 1487, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1240, + "id": 1485, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1312, - "src": "822:9:3", + "referencedDeclaration": 1555, + "src": "802:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1042,37 +996,32 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "hexValue": "3138", - "id": 1241, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "834:2:3", - "subdenomination": null, + "id": 1486, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1455, + "src": "814:8:2", "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, - "src": "822:14:3", + "src": "802:20:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1243, + "id": 1488, "nodeType": "ExpressionStatement", - "src": "822:14:3" + "src": "802:20:2" } ] }, "documentation": null, - "functionSelector": "02a09585", - "id": 1245, + "functionSelector": "a7a2d3fb", + "id": 1490, "implemented": true, "kind": "function", "modifiers": [], @@ -1080,18 +1029,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1207, + "id": 1456, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1204, + "id": 1451, "mutability": "mutable", "name": "_assetChain", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1245, - "src": "490:17:3", + "scope": 1490, + "src": "490:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1099,10 +1048,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1203, + "id": 1450, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "490:5:3", + "src": "490:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1113,13 +1062,13 @@ }, { "constant": false, - "id": 1206, + "id": 1453, "mutability": "mutable", "name": "_assetAddress", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1245, - "src": "509:21:3", + "scope": 1490, + "src": "509:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1127,10 +1076,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1205, + "id": 1452, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "509:7:3", + "src": "509:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1138,27 +1087,55 @@ }, "value": null, "visibility": "internal" + }, + { + "constant": false, + "id": 1455, + "mutability": "mutable", + "name": "decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1490, + "src": "532:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1454, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "532:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" } ], - "src": "489:42:3" + "src": "489:58:2" }, "returnParameters": { - "id": 1208, + "id": 1457, "nodeType": "ParameterList", "parameters": [], - "src": "539:0:3" + "src": "555:0:2" }, - "scope": 1728, - "src": "470:373:3", + "scope": 2147, + "src": "470:359:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { - "id": 1265, + "id": 1510, "nodeType": "Block", - "src": "905:120:3", + "src": "891:120:2", "statements": [ { "expression": { @@ -1170,7 +1147,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1256, + "id": 1501, "isConstant": false, "isLValue": false, "isPure": false, @@ -1179,18 +1156,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1253, + "id": 1498, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "923:3:3", + "src": "909:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1254, + "id": 1499, "isConstant": false, "isLValue": false, "isPure": false, @@ -1198,7 +1175,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "923:10:3", + "src": "909:10:2", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1208,18 +1185,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1255, + "id": 1500, "name": "bridge", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1202, - "src": "937:6:3", + "referencedDeclaration": 1449, + "src": "923:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "923:20:3", + "src": "909:20:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1228,14 +1205,14 @@ { "argumentTypes": null, "hexValue": "6d696e742063616e206f6e6c792062652063616c6c65642062792074686520627269646765", - "id": 1257, + "id": 1502, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "945:39:3", + "src": "931:39:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e7702acf154d2f82cc8c1dd52813f94b0a08ea733aaf89d0cac26f6b55722c5a", @@ -1255,18 +1232,18 @@ "typeString": "literal_string \"mint can only be called by the bridge\"" } ], - "id": 1252, + "id": 1497, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "915:7:3", + "src": "901:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1258, + "id": 1503, "isConstant": false, "isLValue": false, "isPure": false, @@ -1274,16 +1251,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "915:70:3", + "src": "901:70:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1259, + "id": 1504, "nodeType": "ExpressionStatement", - "src": "915:70:3" + "src": "901:70:2" }, { "expression": { @@ -1291,12 +1268,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1261, + "id": 1506, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "1002:7:3", + "referencedDeclaration": 1492, + "src": "988:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1304,12 +1281,12 @@ }, { "argumentTypes": null, - "id": 1262, + "id": 1507, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "1011:6:3", + "referencedDeclaration": 1494, + "src": "997:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1327,18 +1304,18 @@ "typeString": "uint256" } ], - "id": 1260, + "id": 1505, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1624, - "src": "996:5:3", + "referencedDeclaration": 2043, + "src": "982:5:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 1263, + "id": 1508, "isConstant": false, "isLValue": false, "isPure": false, @@ -1346,22 +1323,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "996:22:3", + "src": "982:22:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1264, + "id": 1509, "nodeType": "ExpressionStatement", - "src": "996:22:3" + "src": "982:22:2" } ] }, "documentation": null, "functionSelector": "40c10f19", - "id": 1266, + "id": 1511, "implemented": true, "kind": "function", "modifiers": [], @@ -1369,18 +1346,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1250, + "id": 1495, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1247, + "id": 1492, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1266, - "src": "863:15:3", + "scope": 1511, + "src": "849:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1388,10 +1365,10 @@ "typeString": "address" }, "typeName": { - "id": 1246, + "id": 1491, "name": "address", "nodeType": "ElementaryTypeName", - "src": "863:7:3", + "src": "849:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1403,13 +1380,13 @@ }, { "constant": false, - "id": 1249, + "id": 1494, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1266, - "src": "880:14:3", + "scope": 1511, + "src": "866:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1417,10 +1394,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1248, + "id": 1493, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "880:7:3", + "src": "866:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1430,25 +1407,25 @@ "visibility": "internal" } ], - "src": "862:33:3" + "src": "848:33:2" }, "returnParameters": { - "id": 1251, + "id": 1496, "nodeType": "ParameterList", "parameters": [], - "src": "905:0:3" + "src": "891:0:2" }, - "scope": 1728, - "src": "849:176:3", + "scope": 2147, + "src": "835:176:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { - "id": 1286, + "id": 1531, "nodeType": "Block", - "src": "1087:120:3", + "src": "1073:120:2", "statements": [ { "expression": { @@ -1460,7 +1437,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1277, + "id": 1522, "isConstant": false, "isLValue": false, "isPure": false, @@ -1469,18 +1446,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1274, + "id": 1519, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "1105:3:3", + "src": "1091:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1275, + "id": 1520, "isConstant": false, "isLValue": false, "isPure": false, @@ -1488,7 +1465,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1105:10:3", + "src": "1091:10:2", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1498,18 +1475,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1276, + "id": 1521, "name": "bridge", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1202, - "src": "1119:6:3", + "referencedDeclaration": 1449, + "src": "1105:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1105:20:3", + "src": "1091:20:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1518,14 +1495,14 @@ { "argumentTypes": null, "hexValue": "6275726e2063616e206f6e6c792062652063616c6c65642062792074686520627269646765", - "id": 1278, + "id": 1523, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1127:39:3", + "src": "1113:39:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c31242aa9df4d29364b074986b1202ec8729deca727157a31be5e2473387893b", @@ -1545,18 +1522,18 @@ "typeString": "literal_string \"burn can only be called by the bridge\"" } ], - "id": 1273, + "id": 1518, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "1097:7:3", + "src": "1083:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1279, + "id": 1524, "isConstant": false, "isLValue": false, "isPure": false, @@ -1564,16 +1541,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1097:70:3", + "src": "1083:70:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1280, + "id": 1525, "nodeType": "ExpressionStatement", - "src": "1097:70:3" + "src": "1083:70:2" }, { "expression": { @@ -1581,12 +1558,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1282, + "id": 1527, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1268, - "src": "1184:7:3", + "referencedDeclaration": 1513, + "src": "1170:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1594,12 +1571,12 @@ }, { "argumentTypes": null, - "id": 1283, + "id": 1528, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1270, - "src": "1193:6:3", + "referencedDeclaration": 1515, + "src": "1179:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1617,18 +1594,18 @@ "typeString": "uint256" } ], - "id": 1281, + "id": 1526, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1671, - "src": "1178:5:3", + "referencedDeclaration": 2090, + "src": "1164:5:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 1284, + "id": 1529, "isConstant": false, "isLValue": false, "isPure": false, @@ -1636,22 +1613,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1178:22:3", + "src": "1164:22:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1285, + "id": 1530, "nodeType": "ExpressionStatement", - "src": "1178:22:3" + "src": "1164:22:2" } ] }, "documentation": null, "functionSelector": "9dc29fac", - "id": 1287, + "id": 1532, "implemented": true, "kind": "function", "modifiers": [], @@ -1659,18 +1636,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1271, + "id": 1516, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1268, + "id": 1513, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1287, - "src": "1045:15:3", + "scope": 1532, + "src": "1031:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1678,10 +1655,10 @@ "typeString": "address" }, "typeName": { - "id": 1267, + "id": 1512, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1045:7:3", + "src": "1031:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1693,13 +1670,13 @@ }, { "constant": false, - "id": 1270, + "id": 1515, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1287, - "src": "1062:14:3", + "scope": 1532, + "src": "1048:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1707,10 +1684,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1269, + "id": 1514, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1062:7:3", + "src": "1048:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1720,41 +1697,41 @@ "visibility": "internal" } ], - "src": "1044:33:3" + "src": "1030:33:2" }, "returnParameters": { - "id": 1272, + "id": 1517, "nodeType": "ParameterList", "parameters": [], - "src": "1087:0:3" + "src": "1073:0:2" }, - "scope": 1728, - "src": "1031:176:3", + "scope": 2147, + "src": "1017:176:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 1290, + "id": 1535, "libraryName": { "contractScope": null, - "id": 1288, + "id": 1533, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1947, - "src": "1363:8:3", + "referencedDeclaration": 2505, + "src": "1349:8:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1947", + "typeIdentifier": "t_contract$_SafeMath_$2505", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "1357:27:3", + "src": "1343:27:2", "typeName": { - "id": 1289, + "id": 1534, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1376:7:3", + "src": "1362:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1762,26 +1739,26 @@ } }, { - "id": 1293, + "id": 1538, "libraryName": { "contractScope": null, - "id": 1291, + "id": 1536, "name": "Address", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2442, - "src": "1395:7:3", + "referencedDeclaration": 3595, + "src": "1381:7:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_Address_$2442", + "typeIdentifier": "t_contract$_Address_$3595", "typeString": "library Address" } }, "nodeType": "UsingForDirective", - "src": "1389:26:3", + "src": "1375:26:2", "typeName": { - "id": 1292, + "id": 1537, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1407:7:3", + "src": "1393:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1791,13 +1768,13 @@ }, { "constant": false, - "id": 1297, + "id": 1542, "mutability": "mutable", "name": "_balances", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1728, - "src": "1421:45:3", + "scope": 2147, + "src": "1407:45:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1805,28 +1782,28 @@ "typeString": "mapping(address => uint256)" }, "typeName": { - "id": 1296, + "id": 1541, "keyType": { - "id": 1294, + "id": 1539, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1429:7:3", + "src": "1415:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1421:27:3", + "src": "1407:27:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 1295, + "id": 1540, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1440:7:3", + "src": "1426:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1838,13 +1815,13 @@ }, { "constant": false, - "id": 1303, + "id": 1548, "mutability": "mutable", "name": "_allowances", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1728, - "src": "1473:67:3", + "scope": 2147, + "src": "1459:67:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1852,46 +1829,46 @@ "typeString": "mapping(address => mapping(address => uint256))" }, "typeName": { - "id": 1302, + "id": 1547, "keyType": { - "id": 1298, + "id": 1543, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1481:7:3", + "src": "1467:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1473:47:3", + "src": "1459:47:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "valueType": { - "id": 1301, + "id": 1546, "keyType": { - "id": 1299, + "id": 1544, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1500:7:3", + "src": "1486:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1492:27:3", + "src": "1478:27:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 1300, + "id": 1545, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1511:7:3", + "src": "1497:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1904,13 +1881,13 @@ }, { "constant": false, - "id": 1305, + "id": 1550, "mutability": "mutable", "name": "_totalSupply", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1728, - "src": "1547:28:3", + "scope": 2147, + "src": "1533:28:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1918,10 +1895,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1304, + "id": 1549, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1547:7:3", + "src": "1533:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1932,41 +1909,13 @@ }, { "constant": false, - "id": 1307, - "mutability": "mutable", - "name": "_name", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1728, - "src": "1582:20:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string" - }, - "typeName": { - "id": 1306, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1582:6:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 1309, + "id": 1552, "mutability": "mutable", "name": "_symbol", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1728, - "src": "1608:22:3", + "scope": 2147, + "src": "1568:22:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1974,10 +1923,10 @@ "typeString": "string" }, "typeName": { - "id": 1308, + "id": 1551, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1608:6:3", + "src": "1568:6:2", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1988,13 +1937,13 @@ }, { "constant": false, - "id": 1312, + "id": 1555, "mutability": "mutable", "name": "_decimals", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1728, - "src": "1636:28:3", + "scope": 2147, + "src": "1596:28:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2002,10 +1951,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1310, + "id": 1553, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1636:5:3", + "src": "1596:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2014,14 +1963,14 @@ "value": { "argumentTypes": null, "hexValue": "3138", - "id": 1311, + "id": 1554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1662:2:3", + "src": "1622:2:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", @@ -2033,39 +1982,256 @@ }, { "body": { - "id": 1320, + "id": 1575, "nodeType": "Block", - "src": "1782:29:3", + "src": "1742:124:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 1318, - "name": "_name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1307, - "src": "1799:5:3", + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "576f726d686f6c652057726170706564202d20", + "id": 1565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1783:21:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5cf7e3c6b428de30b95e99bd5727c04cd18c12b66cf3176e2f95b4ceb77530a8", + "typeString": "literal_string \"Wormhole Wrapped - \"" + }, + "value": "Wormhole Wrapped - " + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1567, + "name": "assetChain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1443, + "src": "1819:10:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1566, + "name": "uintToString", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1654, + "src": "1806:12:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 1568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1806:24:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "hexValue": "2d", + "id": 1569, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1832:3:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561", + "typeString": "literal_string \"-\"" + }, + "value": "-" + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1570, + "name": "assetAddressString", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "1837:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", + "typeString": "function () view returns (string memory)" + } + }, + "id": 1571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1837:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_5cf7e3c6b428de30b95e99bd5727c04cd18c12b66cf3176e2f95b4ceb77530a8", + "typeString": "literal_string \"Wormhole Wrapped - \"" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561", + "typeString": "literal_string \"-\"" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 1563, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1766:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1766:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1766:92:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1562, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1759:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 1561, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1759:6:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1759:100:2", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" } }, - "functionReturnParameters": 1317, - "id": 1319, + "functionReturnParameters": 1560, + "id": 1574, "nodeType": "Return", - "src": "1792:12:3" + "src": "1752:107:2" } ] }, "documentation": { - "id": 1313, + "id": 1556, "nodeType": "StructuredDocumentation", - "src": "1671:54:3", + "src": "1631:54:2", "text": " @dev Returns the name of the token." }, "functionSelector": "06fdde03", - "id": 1321, + "id": 1576, "implemented": true, "kind": "function", "modifiers": [], @@ -2073,24 +2239,24 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1314, + "id": 1557, "nodeType": "ParameterList", "parameters": [], - "src": "1743:2:3" + "src": "1703:2:2" }, "returnParameters": { - "id": 1317, + "id": 1560, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1316, + "id": 1559, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1321, - "src": "1767:13:3", + "scope": 1576, + "src": "1727:13:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2098,10 +2264,10 @@ "typeString": "string" }, "typeName": { - "id": 1315, + "id": 1558, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1767:6:3", + "src": "1727:6:2", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2111,256 +2277,985 @@ "visibility": "internal" } ], - "src": "1766:15:3" + "src": "1726:15:2" }, - "scope": 1728, - "src": "1730:81:3", + "scope": 2147, + "src": "1690:176:2", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 1329, + "id": 1653, "nodeType": "Block", - "src": "1978:31:3", + "src": "2005:386:2", "statements": [ { - "expression": { + "condition": { "argumentTypes": null, - "id": 1327, - "name": "_symbol", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1583, + "name": "_i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1578, + "src": "2019:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2025:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2019:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1589, + "nodeType": "IfStatement", + "src": "2015:48:2", + "trueBody": { + "id": 1588, + "nodeType": "Block", + "src": "2028:35:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2049:3:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", + "typeString": "literal_string \"0\"" + }, + "value": "0" + }, + "functionReturnParameters": 1582, + "id": 1587, + "nodeType": "Return", + "src": "2042:10:2" + } + ] + } + }, + { + "assignments": [1591], + "declarations": [ + { + "constant": false, + "id": 1591, + "mutability": "mutable", + "name": "j", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1653, + "src": "2072:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1590, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2072:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1593, + "initialValue": { + "argumentTypes": null, + "id": 1592, + "name": "_i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1309, - "src": "1995:7:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "functionReturnParameters": 1326, - "id": 1328, - "nodeType": "Return", - "src": "1988:14:3" - } - ] - }, - "documentation": { - "id": 1322, - "nodeType": "StructuredDocumentation", - "src": "1817:102:3", - "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." - }, - "functionSelector": "95d89b41", - "id": 1330, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "symbol", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1323, - "nodeType": "ParameterList", - "parameters": [], - "src": "1939:2:3" - }, - "returnParameters": { - "id": 1326, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1325, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1330, - "src": "1963:13:3", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 1324, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1963:6:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1962:15:3" - }, - "scope": 1728, - "src": "1924:85:3", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1338, - "nodeType": "Block", - "src": "2680:33:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1336, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1312, - "src": "2697:9:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "functionReturnParameters": 1335, - "id": 1337, - "nodeType": "Return", - "src": "2690:16:3" - } - ] - }, - "documentation": { - "id": 1331, - "nodeType": "StructuredDocumentation", - "src": "2015:612:3", - "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." - }, - "functionSelector": "313ce567", - "id": 1339, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "decimals", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1332, - "nodeType": "ParameterList", - "parameters": [], - "src": "2649:2:3" - }, - "returnParameters": { - "id": 1335, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1334, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1339, - "src": "2673:5:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1333, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2673:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2672:7:3" - }, - "scope": 1728, - "src": "2632:81:3", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "baseFunctions": [1956], - "body": { - "id": 1348, - "nodeType": "Block", - "src": "2835:36:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1346, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "2852:12:3", + "referencedDeclaration": 1578, + "src": "2081:2:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1345, - "id": 1347, + "nodeType": "VariableDeclarationStatement", + "src": "2072:11:2" + }, + { + "assignments": [1595], + "declarations": [ + { + "constant": false, + "id": 1595, + "mutability": "mutable", + "name": "len", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1653, + "src": "2093:8:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1594, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2093:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1596, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2093:8:2" + }, + { + "body": { + "id": 1607, + "nodeType": "Block", + "src": "2126:51:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2140:5:2", + "subExpression": { + "argumentTypes": null, + "id": 1600, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1595, + "src": "2140:3:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1602, + "nodeType": "ExpressionStatement", + "src": "2140:5:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 1605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1603, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1591, + "src": "2159:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2164:2:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "2159:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1606, + "nodeType": "ExpressionStatement", + "src": "2159:7:2" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1597, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1591, + "src": "2118:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2123:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2118:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1608, + "nodeType": "WhileStatement", + "src": "2111:66:2" + }, + { + "assignments": [1610], + "declarations": [ + { + "constant": false, + "id": 1610, + "mutability": "mutable", + "name": "bstr", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1653, + "src": "2186:17:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1609, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2186:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1615, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1613, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1595, + "src": "2216:3:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "2206:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 1611, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2210:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 1614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2206:14:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2186:34:2" + }, + { + "assignments": [1617], + "declarations": [ + { + "constant": false, + "id": 1617, + "mutability": "mutable", + "name": "k", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1653, + "src": "2230:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1616, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2230:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1621, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1618, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1595, + "src": "2239:3:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1619, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2245:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2239:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2230:16:2" + }, + { + "body": { + "id": 1646, + "nodeType": "Block", + "src": "2272:84:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1625, + "name": "bstr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1610, + "src": "2286:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1628, + "indexExpression": { + "argumentTypes": null, + "id": 1627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "2291:3:2", + "subExpression": { + "argumentTypes": null, + "id": 1626, + "name": "k", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1617, + "src": "2291:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2286:9:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3438", + "id": 1633, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2309:2:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1634, + "name": "_i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1578, + "src": "2314:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1635, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2319:2:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "2314:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2309:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2303:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 1631, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2303:5:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2303:19:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1630, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2298:4:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": { + "id": 1629, + "name": "byte", + "nodeType": "ElementaryTypeName", + "src": "2298:4:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2298:25:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "2286:37:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 1641, + "nodeType": "ExpressionStatement", + "src": "2286:37:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 1644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1642, + "name": "_i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1578, + "src": "2337:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1643, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2343:2:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "2337:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1645, + "nodeType": "ExpressionStatement", + "src": "2337:8:2" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1622, + "name": "_i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1578, + "src": "2263:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2269:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2263:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1647, + "nodeType": "WhileStatement", + "src": "2256:100:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1650, + "name": "bstr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1610, + "src": "2379:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2372:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 1648, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2372:6:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2372:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 1582, + "id": 1652, "nodeType": "Return", - "src": "2845:19:3" + "src": "2365:19:2" } ] }, - "documentation": { - "id": 1340, - "nodeType": "StructuredDocumentation", - "src": "2719:49:3", - "text": " @dev See {IERC20-totalSupply}." - }, - "functionSelector": "18160ddd", - "id": 1349, + "documentation": null, + "id": 1654, "implemented": true, "kind": "function", "modifiers": [], - "name": "totalSupply", + "name": "uintToString", "nodeType": "FunctionDefinition", - "overrides": { - "id": 1342, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2808:8:3" - }, + "overrides": null, "parameters": { - "id": 1341, - "nodeType": "ParameterList", - "parameters": [], - "src": "2793:2:3" - }, - "returnParameters": { - "id": 1345, + "id": 1579, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1344, + "id": 1578, "mutability": "mutable", - "name": "", + "name": "_i", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1349, - "src": "2826:7:3", + "scope": 1654, + "src": "1944:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2368,10 +3263,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1343, - "name": "uint256", + "id": 1577, + "name": "uint", "nodeType": "ElementaryTypeName", - "src": "2826:7:3", + "src": "1944:4:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2381,46 +3276,1563 @@ "visibility": "internal" } ], - "src": "2825:9:3" + "src": "1943:9:2" }, - "scope": 1728, - "src": "2773:98:3", + "returnParameters": { + "id": 1582, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1581, + "mutability": "mutable", + "name": "_uintAsString", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1654, + "src": "1976:27:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1580, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1976:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1975:29:2" + }, + "scope": 2147, + "src": "1922:469:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1739, + "nodeType": "Block", + "src": "2514:373:2", + "statements": [ + { + "assignments": [1660], + "declarations": [ + { + "constant": false, + "id": 1660, + "mutability": "mutable", + "name": "alphabet", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1739, + "src": "2524:21:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1659, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2524:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1662, + "initialValue": { + "argumentTypes": null, + "hexValue": "30313233343536373839616263646566", + "id": 1661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2548:18:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f", + "typeString": "literal_string \"0123456789abcdef\"" + }, + "value": "0123456789abcdef" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2524:42:2" + }, + { + "assignments": [1664], + "declarations": [ + { + "constant": false, + "id": 1664, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1739, + "src": "2576:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1663, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2576:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1666, + "initialValue": { + "argumentTypes": null, + "id": 1665, + "name": "assetAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "2591:12:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2576:27:2" + }, + { + "assignments": [1668], + "declarations": [ + { + "constant": false, + "id": 1668, + "mutability": "mutable", + "name": "str", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1739, + "src": "2614:16:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1667, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2614:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1678, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1671, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2643:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1672, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1664, + "src": "2647:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2647:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1674, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2661:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2647:15:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2643:19:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1670, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "2633:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 1669, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2637:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 1677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2633:30:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2614:49:2" + }, + { + "body": { + "id": 1732, + "nodeType": "Block", + "src": "2712:141:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1690, + "name": "str", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1668, + "src": "2726:3:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1694, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1691, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1680, + "src": "2730:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2734:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2730:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2726:10:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1695, + "name": "alphabet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1660, + "src": "2739:8:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1707, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 1704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1700, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1664, + "src": "2759:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1702, + "indexExpression": { + "argumentTypes": null, + "id": 1701, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1680, + "src": "2764:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2759:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 1703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2770:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "2759:12:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 1699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2753:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 1698, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2753:5:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2753:19:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2748:4:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1696, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2748:4:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2748:25:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2739:35:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "2726:48:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 1709, + "nodeType": "ExpressionStatement", + "src": "2726:48:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 1730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1710, + "name": "str", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1668, + "src": "2788:3:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1716, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2792:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1712, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1680, + "src": "2796:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2800:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2796:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2792:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2788:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1717, + "name": "alphabet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1660, + "src": "2805:8:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1729, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 1726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1722, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1664, + "src": "2825:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1724, + "indexExpression": { + "argumentTypes": null, + "id": 1723, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1680, + "src": "2830:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2825:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30783066", + "id": 1725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2835:4:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_15_by_1", + "typeString": "int_const 15" + }, + "value": "0x0f" + }, + "src": "2825:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 1721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2819:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 1720, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2819:5:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2819:21:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1719, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2814:4:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1718, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2814:4:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2814:27:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2805:37:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "2788:54:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 1731, + "nodeType": "ExpressionStatement", + "src": "2788:54:2" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1683, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1680, + "src": "2690:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1684, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1664, + "src": "2694:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2694:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2690:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1733, + "initializationExpression": { + "assignments": [1680], + "declarations": [ + { + "constant": false, + "id": 1680, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1733, + "src": "2678:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1679, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2678:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1682, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2687:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2678:10:2" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2707:3:2", + "subExpression": { + "argumentTypes": null, + "id": 1687, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1680, + "src": "2707:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1689, + "nodeType": "ExpressionStatement", + "src": "2707:3:2" + }, + "nodeType": "ForStatement", + "src": "2673:180:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1736, + "name": "str", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1668, + "src": "2876:3:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2869:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 1734, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2869:6:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2869:11:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 1658, + "id": 1738, + "nodeType": "Return", + "src": "2862:18:2" + } + ] + }, + "documentation": null, + "id": 1740, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "assetAddressString", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1655, + "nodeType": "ParameterList", + "parameters": [], + "src": "2474:2:2" + }, + "returnParameters": { + "id": 1658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1657, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1740, + "src": "2499:13:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1656, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2499:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2498:15:2" + }, + "scope": 2147, + "src": "2447:440:2", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1748, + "nodeType": "Block", + "src": "3054:31:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1746, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1552, + "src": "3071:7:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 1745, + "id": 1747, + "nodeType": "Return", + "src": "3064:14:2" + } + ] + }, + "documentation": { + "id": 1741, + "nodeType": "StructuredDocumentation", + "src": "2893:102:2", + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "functionSelector": "95d89b41", + "id": 1749, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1742, + "nodeType": "ParameterList", + "parameters": [], + "src": "3015:2:2" + }, + "returnParameters": { + "id": 1745, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1744, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1749, + "src": "3039:13:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1743, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3039:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3038:15:2" + }, + "scope": 2147, + "src": "3000:85:2", "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "baseFunctions": [1964], "body": { - "id": 1362, + "id": 1757, "nodeType": "Block", - "src": "3004:42:3", + "src": "3756:33:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1755, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1555, + "src": "3773:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 1754, + "id": 1756, + "nodeType": "Return", + "src": "3766:16:2" + } + ] + }, + "documentation": { + "id": 1750, + "nodeType": "StructuredDocumentation", + "src": "3091:612:2", + "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." + }, + "functionSelector": "313ce567", + "id": 1758, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1751, + "nodeType": "ParameterList", + "parameters": [], + "src": "3725:2:2" + }, + "returnParameters": { + "id": 1754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1753, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1758, + "src": "3749:5:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1752, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3749:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3748:7:2" + }, + "scope": 2147, + "src": "3708:81:2", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [3017], + "body": { + "id": 1767, + "nodeType": "Block", + "src": "3911:36:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1765, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1550, + "src": "3928:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1764, + "id": 1766, + "nodeType": "Return", + "src": "3921:19:2" + } + ] + }, + "documentation": { + "id": 1759, + "nodeType": "StructuredDocumentation", + "src": "3795:49:2", + "text": " @dev See {IERC20-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 1768, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1761, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3884:8:2" + }, + "parameters": { + "id": 1760, + "nodeType": "ParameterList", + "parameters": [], + "src": "3869:2:2" + }, + "returnParameters": { + "id": 1764, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1763, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1768, + "src": "3902:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1762, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3902:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3901:9:2" + }, + "scope": 2147, + "src": "3849:98:2", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [3025], + "body": { + "id": 1781, + "nodeType": "Block", + "src": "4080:42:2", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1358, + "id": 1777, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "3021:9:3", + "referencedDeclaration": 1542, + "src": "4097:9:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1360, + "id": 1779, "indexExpression": { "argumentTypes": null, - "id": 1359, + "id": 1778, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1352, - "src": "3031:7:3", + "referencedDeclaration": 1771, + "src": "4107:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2431,51 +4843,51 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3021:18:3", + "src": "4097:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1357, - "id": 1361, + "functionReturnParameters": 1776, + "id": 1780, "nodeType": "Return", - "src": "3014:25:3" + "src": "4090:25:2" } ] }, "documentation": { - "id": 1350, + "id": 1769, "nodeType": "StructuredDocumentation", - "src": "2877:47:3", + "src": "3953:47:2", "text": " @dev See {IERC20-balanceOf}." }, "functionSelector": "70a08231", - "id": 1363, + "id": 1782, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "overrides": { - "id": 1354, + "id": 1773, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "2977:8:3" + "src": "4053:8:2" }, "parameters": { - "id": 1353, + "id": 1772, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1352, + "id": 1771, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1363, - "src": "2948:15:3", + "scope": 1782, + "src": "4024:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2483,10 +4895,10 @@ "typeString": "address" }, "typeName": { - "id": 1351, + "id": 1770, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2948:7:3", + "src": "4024:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2497,21 +4909,21 @@ "visibility": "internal" } ], - "src": "2947:17:3" + "src": "4023:17:2" }, "returnParameters": { - "id": 1357, + "id": 1776, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1356, + "id": 1775, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1363, - "src": "2995:7:3", + "scope": 1782, + "src": "4071:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2519,10 +4931,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1355, + "id": 1774, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2995:7:3", + "src": "4071:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2532,20 +4944,20 @@ "visibility": "internal" } ], - "src": "2994:9:3" + "src": "4070:9:2" }, - "scope": 1728, - "src": "2929:117:3", + "scope": 2147, + "src": "4005:117:2", "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "baseFunctions": [1974], + "baseFunctions": [3035], "body": { - "id": 1383, + "id": 1802, "nodeType": "Block", - "src": "3333:80:3", + "src": "4409:80:2", "statements": [ { "expression": { @@ -2556,18 +4968,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1375, + "id": 1794, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "3353:10:3", + "referencedDeclaration": 3606, + "src": "4429:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 1376, + "id": 1795, "isConstant": false, "isLValue": false, "isPure": false, @@ -2575,7 +4987,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3353:12:3", + "src": "4429:12:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -2584,12 +4996,12 @@ }, { "argumentTypes": null, - "id": 1377, + "id": 1796, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1366, - "src": "3367:9:3", + "referencedDeclaration": 1785, + "src": "4443:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2597,12 +5009,12 @@ }, { "argumentTypes": null, - "id": 1378, + "id": 1797, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1368, - "src": "3378:6:3", + "referencedDeclaration": 1787, + "src": "4454:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2624,18 +5036,18 @@ "typeString": "uint256" } ], - "id": 1374, + "id": 1793, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1578, - "src": "3343:9:3", + "referencedDeclaration": 1997, + "src": "4419:9:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 1379, + "id": 1798, "isConstant": false, "isLValue": false, "isPure": false, @@ -2643,29 +5055,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3343:42:3", + "src": "4419:42:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1380, + "id": 1799, "nodeType": "ExpressionStatement", - "src": "3343:42:3" + "src": "4419:42:2" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1381, + "id": 1800, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3402:4:3", + "src": "4478:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2673,45 +5085,45 @@ }, "value": "true" }, - "functionReturnParameters": 1373, - "id": 1382, + "functionReturnParameters": 1792, + "id": 1801, "nodeType": "Return", - "src": "3395:11:3" + "src": "4471:11:2" } ] }, "documentation": { - "id": 1364, + "id": 1783, "nodeType": "StructuredDocumentation", - "src": "3052:192:3", + "src": "4128:192:2", "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`." }, "functionSelector": "a9059cbb", - "id": 1384, + "id": 1803, "implemented": true, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "overrides": { - "id": 1370, + "id": 1789, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "3309:8:3" + "src": "4385:8:2" }, "parameters": { - "id": 1369, + "id": 1788, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1366, + "id": 1785, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1384, - "src": "3267:17:3", + "scope": 1803, + "src": "4343:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2719,10 +5131,10 @@ "typeString": "address" }, "typeName": { - "id": 1365, + "id": 1784, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3267:7:3", + "src": "4343:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2734,13 +5146,13 @@ }, { "constant": false, - "id": 1368, + "id": 1787, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1384, - "src": "3286:14:3", + "scope": 1803, + "src": "4362:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2748,10 +5160,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1367, + "id": 1786, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3286:7:3", + "src": "4362:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2761,21 +5173,21 @@ "visibility": "internal" } ], - "src": "3266:35:3" + "src": "4342:35:2" }, "returnParameters": { - "id": 1373, + "id": 1792, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1372, + "id": 1791, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1384, - "src": "3327:4:3", + "scope": 1803, + "src": "4403:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2783,10 +5195,10 @@ "typeString": "bool" }, "typeName": { - "id": 1371, + "id": 1790, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3327:4:3", + "src": "4403:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2796,20 +5208,20 @@ "visibility": "internal" } ], - "src": "3326:6:3" + "src": "4402:6:2" }, - "scope": 1728, - "src": "3249:164:3", + "scope": 2147, + "src": "4325:164:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "baseFunctions": [1984], + "baseFunctions": [3045], "body": { - "id": 1401, + "id": 1820, "nodeType": "Block", - "src": "3561:51:3", + "src": "4637:51:2", "statements": [ { "expression": { @@ -2818,26 +5230,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1395, + "id": 1814, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "3578:11:3", + "referencedDeclaration": 1548, + "src": "4654:11:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 1397, + "id": 1816, "indexExpression": { "argumentTypes": null, - "id": 1396, + "id": 1815, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1387, - "src": "3590:5:3", + "referencedDeclaration": 1806, + "src": "4666:5:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2848,21 +5260,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3578:18:3", + "src": "4654:18:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1399, + "id": 1818, "indexExpression": { "argumentTypes": null, - "id": 1398, + "id": 1817, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1389, - "src": "3597:7:3", + "referencedDeclaration": 1808, + "src": "4673:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2873,51 +5285,51 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3578:27:3", + "src": "4654:27:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1394, - "id": 1400, + "functionReturnParameters": 1813, + "id": 1819, "nodeType": "Return", - "src": "3571:34:3" + "src": "4647:34:2" } ] }, "documentation": { - "id": 1385, + "id": 1804, "nodeType": "StructuredDocumentation", - "src": "3419:47:3", + "src": "4495:47:2", "text": " @dev See {IERC20-allowance}." }, "functionSelector": "dd62ed3e", - "id": 1402, + "id": 1821, "implemented": true, "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", "overrides": { - "id": 1391, + "id": 1810, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "3534:8:3" + "src": "4610:8:2" }, "parameters": { - "id": 1390, + "id": 1809, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1387, + "id": 1806, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1402, - "src": "3490:13:3", + "scope": 1821, + "src": "4566:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2925,10 +5337,10 @@ "typeString": "address" }, "typeName": { - "id": 1386, + "id": 1805, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3490:7:3", + "src": "4566:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2940,13 +5352,13 @@ }, { "constant": false, - "id": 1389, + "id": 1808, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1402, - "src": "3505:15:3", + "scope": 1821, + "src": "4581:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2954,10 +5366,10 @@ "typeString": "address" }, "typeName": { - "id": 1388, + "id": 1807, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3505:7:3", + "src": "4581:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2968,21 +5380,21 @@ "visibility": "internal" } ], - "src": "3489:32:3" + "src": "4565:32:2" }, "returnParameters": { - "id": 1394, + "id": 1813, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1393, + "id": 1812, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1402, - "src": "3552:7:3", + "scope": 1821, + "src": "4628:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2990,10 +5402,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1392, + "id": 1811, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3552:7:3", + "src": "4628:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3003,20 +5415,20 @@ "visibility": "internal" } ], - "src": "3551:9:3" + "src": "4627:9:2" }, - "scope": 1728, - "src": "3471:141:3", + "scope": 2147, + "src": "4547:141:2", "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "baseFunctions": [1994], + "baseFunctions": [3055], "body": { - "id": 1422, + "id": 1841, "nodeType": "Block", - "src": "3831:77:3", + "src": "4907:77:2", "statements": [ { "expression": { @@ -3027,18 +5439,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1414, + "id": 1833, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "3850:10:3", + "referencedDeclaration": 3606, + "src": "4926:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 1415, + "id": 1834, "isConstant": false, "isLValue": false, "isPure": false, @@ -3046,7 +5458,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3850:12:3", + "src": "4926:12:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3055,12 +5467,12 @@ }, { "argumentTypes": null, - "id": 1416, + "id": 1835, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1405, - "src": "3864:7:3", + "referencedDeclaration": 1824, + "src": "4940:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3068,12 +5480,12 @@ }, { "argumentTypes": null, - "id": 1417, + "id": 1836, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1407, - "src": "3873:6:3", + "referencedDeclaration": 1826, + "src": "4949:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3095,18 +5507,18 @@ "typeString": "uint256" } ], - "id": 1413, + "id": 1832, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "3841:8:3", + "referencedDeclaration": 2135, + "src": "4917:8:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 1418, + "id": 1837, "isConstant": false, "isLValue": false, "isPure": false, @@ -3114,29 +5526,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3841:39:3", + "src": "4917:39:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1419, + "id": 1838, "nodeType": "ExpressionStatement", - "src": "3841:39:3" + "src": "4917:39:2" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1420, + "id": 1839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3897:4:3", + "src": "4973:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3144,45 +5556,45 @@ }, "value": "true" }, - "functionReturnParameters": 1412, - "id": 1421, + "functionReturnParameters": 1831, + "id": 1840, "nodeType": "Return", - "src": "3890:11:3" + "src": "4966:11:2" } ] }, "documentation": { - "id": 1403, + "id": 1822, "nodeType": "StructuredDocumentation", - "src": "3618:127:3", + "src": "4694:127:2", "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address." }, "functionSelector": "095ea7b3", - "id": 1423, + "id": 1842, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "overrides": { - "id": 1409, + "id": 1828, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "3807:8:3" + "src": "4883:8:2" }, "parameters": { - "id": 1408, + "id": 1827, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1405, + "id": 1824, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1423, - "src": "3767:15:3", + "scope": 1842, + "src": "4843:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3190,10 +5602,10 @@ "typeString": "address" }, "typeName": { - "id": 1404, + "id": 1823, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3767:7:3", + "src": "4843:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3205,13 +5617,13 @@ }, { "constant": false, - "id": 1407, + "id": 1826, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1423, - "src": "3784:14:3", + "scope": 1842, + "src": "4860:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3219,10 +5631,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1406, + "id": 1825, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3784:7:3", + "src": "4860:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3232,21 +5644,21 @@ "visibility": "internal" } ], - "src": "3766:33:3" + "src": "4842:33:2" }, "returnParameters": { - "id": 1412, + "id": 1831, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1411, + "id": 1830, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1423, - "src": "3825:4:3", + "scope": 1842, + "src": "4901:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3254,10 +5666,10 @@ "typeString": "bool" }, "typeName": { - "id": 1410, + "id": 1829, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3825:4:3", + "src": "4901:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3267,20 +5679,20 @@ "visibility": "internal" } ], - "src": "3824:6:3" + "src": "4900:6:2" }, - "scope": 1728, - "src": "3750:158:3", + "scope": 2147, + "src": "4826:158:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "baseFunctions": [2006], + "baseFunctions": [3067], "body": { - "id": 1460, + "id": 1879, "nodeType": "Block", - "src": "4472:205:3", + "src": "5548:205:2", "statements": [ { "expression": { @@ -3288,12 +5700,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1437, + "id": 1856, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1426, - "src": "4492:6:3", + "referencedDeclaration": 1845, + "src": "5568:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3301,12 +5713,12 @@ }, { "argumentTypes": null, - "id": 1438, + "id": 1857, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1428, - "src": "4500:9:3", + "referencedDeclaration": 1847, + "src": "5576:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3314,12 +5726,12 @@ }, { "argumentTypes": null, - "id": 1439, + "id": 1858, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1430, - "src": "4511:6:3", + "referencedDeclaration": 1849, + "src": "5587:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3341,18 +5753,18 @@ "typeString": "uint256" } ], - "id": 1436, + "id": 1855, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1578, - "src": "4482:9:3", + "referencedDeclaration": 1997, + "src": "5558:9:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 1440, + "id": 1859, "isConstant": false, "isLValue": false, "isPure": false, @@ -3360,16 +5772,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4482:36:3", + "src": "5558:36:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1441, + "id": 1860, "nodeType": "ExpressionStatement", - "src": "4482:36:3" + "src": "5558:36:2" }, { "expression": { @@ -3377,12 +5789,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1443, + "id": 1862, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1426, - "src": "4537:6:3", + "referencedDeclaration": 1845, + "src": "5613:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3393,18 +5805,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1444, + "id": 1863, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "4545:10:3", + "referencedDeclaration": 3606, + "src": "5621:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 1445, + "id": 1864, "isConstant": false, "isLValue": false, "isPure": false, @@ -3412,7 +5824,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4545:12:3", + "src": "5621:12:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3424,12 +5836,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1453, + "id": 1872, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1430, - "src": "4597:6:3", + "referencedDeclaration": 1849, + "src": "5673:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3438,14 +5850,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", - "id": 1454, + "id": 1873, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4605:42:3", + "src": "5681:42:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", @@ -3471,26 +5883,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1446, + "id": 1865, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "4559:11:3", + "referencedDeclaration": 1548, + "src": "5635:11:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 1448, + "id": 1867, "indexExpression": { "argumentTypes": null, - "id": 1447, + "id": 1866, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1426, - "src": "4571:6:3", + "referencedDeclaration": 1845, + "src": "5647:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3501,30 +5913,30 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4559:19:3", + "src": "5635:19:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1451, + "id": 1870, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 1449, + "id": 1868, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "4579:10:3", + "referencedDeclaration": 3606, + "src": "5655:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 1450, + "id": 1869, "isConstant": false, "isLValue": false, "isPure": false, @@ -3532,7 +5944,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4579:12:3", + "src": "5655:12:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3544,27 +5956,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4559:33:3", + "src": "5635:33:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1452, + "id": 1871, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 1825, - "src": "4559:37:3", + "referencedDeclaration": 2456, + "src": "5635:37:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 1455, + "id": 1874, "isConstant": false, "isLValue": false, "isPure": false, @@ -3572,7 +5984,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4559:89:3", + "src": "5635:89:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3595,18 +6007,18 @@ "typeString": "uint256" } ], - "id": 1442, + "id": 1861, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "4528:8:3", + "referencedDeclaration": 2135, + "src": "5604:8:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 1456, + "id": 1875, "isConstant": false, "isLValue": false, "isPure": false, @@ -3614,29 +6026,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4528:121:3", + "src": "5604:121:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1457, + "id": 1876, "nodeType": "ExpressionStatement", - "src": "4528:121:3" + "src": "5604:121:2" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1458, + "id": 1877, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4666:4:3", + "src": "5742:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3644,45 +6056,45 @@ }, "value": "true" }, - "functionReturnParameters": 1435, - "id": 1459, + "functionReturnParameters": 1854, + "id": 1878, "nodeType": "Return", - "src": "4659:11:3" + "src": "5735:11:2" } ] }, "documentation": { - "id": 1424, + "id": 1843, "nodeType": "StructuredDocumentation", - "src": "3914:449:3", + "src": "4990:449:2", "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20};\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`." }, "functionSelector": "23b872dd", - "id": 1461, + "id": 1880, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "overrides": { - "id": 1432, + "id": 1851, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "4448:8:3" + "src": "5524:8:2" }, "parameters": { - "id": 1431, + "id": 1850, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1426, + "id": 1845, "mutability": "mutable", "name": "sender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1461, - "src": "4390:14:3", + "scope": 1880, + "src": "5466:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3690,10 +6102,10 @@ "typeString": "address" }, "typeName": { - "id": 1425, + "id": 1844, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4390:7:3", + "src": "5466:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3705,13 +6117,13 @@ }, { "constant": false, - "id": 1428, + "id": 1847, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1461, - "src": "4406:17:3", + "scope": 1880, + "src": "5482:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3719,10 +6131,10 @@ "typeString": "address" }, "typeName": { - "id": 1427, + "id": 1846, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4406:7:3", + "src": "5482:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3734,13 +6146,13 @@ }, { "constant": false, - "id": 1430, + "id": 1849, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1461, - "src": "4425:14:3", + "scope": 1880, + "src": "5501:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3748,10 +6160,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1429, + "id": 1848, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4425:7:3", + "src": "5501:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3761,21 +6173,21 @@ "visibility": "internal" } ], - "src": "4389:51:3" + "src": "5465:51:2" }, "returnParameters": { - "id": 1435, + "id": 1854, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1434, + "id": 1853, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1461, - "src": "4466:4:3", + "scope": 1880, + "src": "5542:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3783,10 +6195,10 @@ "typeString": "bool" }, "typeName": { - "id": 1433, + "id": 1852, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4466:4:3", + "src": "5542:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3796,19 +6208,19 @@ "visibility": "internal" } ], - "src": "4465:6:3" + "src": "5541:6:2" }, - "scope": 1728, - "src": "4368:309:3", + "scope": 2147, + "src": "5444:309:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { - "id": 1488, + "id": 1907, "nodeType": "Block", - "src": "5158:121:3", + "src": "6234:121:2", "statements": [ { "expression": { @@ -3819,18 +6231,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1472, + "id": 1891, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "5177:10:3", + "referencedDeclaration": 3606, + "src": "6253:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 1473, + "id": 1892, "isConstant": false, "isLValue": false, "isPure": false, @@ -3838,7 +6250,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5177:12:3", + "src": "6253:12:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3847,12 +6259,12 @@ }, { "argumentTypes": null, - "id": 1474, + "id": 1893, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1464, - "src": "5191:7:3", + "referencedDeclaration": 1883, + "src": "6267:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3863,12 +6275,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1482, + "id": 1901, "name": "addedValue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1466, - "src": "5239:10:3", + "referencedDeclaration": 1885, + "src": "6315:10:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3888,35 +6300,35 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1475, + "id": 1894, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "5200:11:3", + "referencedDeclaration": 1548, + "src": "6276:11:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 1478, + "id": 1897, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 1476, + "id": 1895, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "5212:10:3", + "referencedDeclaration": 3606, + "src": "6288:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 1477, + "id": 1896, "isConstant": false, "isLValue": false, "isPure": false, @@ -3924,7 +6336,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5212:12:3", + "src": "6288:12:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3936,21 +6348,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5200:25:3", + "src": "6276:25:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1480, + "id": 1899, "indexExpression": { "argumentTypes": null, - "id": 1479, + "id": 1898, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1464, - "src": "5226:7:3", + "referencedDeclaration": 1883, + "src": "6302:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3961,27 +6373,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5200:34:3", + "src": "6276:34:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1481, + "id": 1900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1780, - "src": "5200:38:3", + "referencedDeclaration": 2332, + "src": "6276:38:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1483, + "id": 1902, "isConstant": false, "isLValue": false, "isPure": false, @@ -3989,7 +6401,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5200:50:3", + "src": "6276:50:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4012,18 +6424,18 @@ "typeString": "uint256" } ], - "id": 1471, + "id": 1890, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "5168:8:3", + "referencedDeclaration": 2135, + "src": "6244:8:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 1484, + "id": 1903, "isConstant": false, "isLValue": false, "isPure": false, @@ -4031,29 +6443,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5168:83:3", + "src": "6244:83:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1485, + "id": 1904, "nodeType": "ExpressionStatement", - "src": "5168:83:3" + "src": "6244:83:2" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1486, + "id": 1905, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "5268:4:3", + "src": "6344:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4061,21 +6473,21 @@ }, "value": "true" }, - "functionReturnParameters": 1470, - "id": 1487, + "functionReturnParameters": 1889, + "id": 1906, "nodeType": "Return", - "src": "5261:11:3" + "src": "6337:11:2" } ] }, "documentation": { - "id": 1462, + "id": 1881, "nodeType": "StructuredDocumentation", - "src": "4683:384:3", + "src": "5759:384:2", "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." }, "functionSelector": "39509351", - "id": 1489, + "id": 1908, "implemented": true, "kind": "function", "modifiers": [], @@ -4083,18 +6495,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1467, + "id": 1886, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1464, + "id": 1883, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1489, - "src": "5099:15:3", + "scope": 1908, + "src": "6175:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4102,10 +6514,10 @@ "typeString": "address" }, "typeName": { - "id": 1463, + "id": 1882, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5099:7:3", + "src": "6175:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4117,13 +6529,13 @@ }, { "constant": false, - "id": 1466, + "id": 1885, "mutability": "mutable", "name": "addedValue", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1489, - "src": "5116:18:3", + "scope": 1908, + "src": "6192:18:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4131,10 +6543,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1465, + "id": 1884, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5116:7:3", + "src": "6192:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4144,21 +6556,21 @@ "visibility": "internal" } ], - "src": "5098:37:3" + "src": "6174:37:2" }, "returnParameters": { - "id": 1470, + "id": 1889, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1469, + "id": 1888, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1489, - "src": "5152:4:3", + "scope": 1908, + "src": "6228:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4166,10 +6578,10 @@ "typeString": "bool" }, "typeName": { - "id": 1468, + "id": 1887, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "5152:4:3", + "src": "6228:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4179,19 +6591,19 @@ "visibility": "internal" } ], - "src": "5151:6:3" + "src": "6227:6:2" }, - "scope": 1728, - "src": "5072:207:3", + "scope": 2147, + "src": "6148:207:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { - "id": 1517, + "id": 1936, "nodeType": "Block", - "src": "5857:167:3", + "src": "6933:167:2", "statements": [ { "expression": { @@ -4202,18 +6614,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1500, + "id": 1919, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "5876:10:3", + "referencedDeclaration": 3606, + "src": "6952:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 1501, + "id": 1920, "isConstant": false, "isLValue": false, "isPure": false, @@ -4221,7 +6633,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5876:12:3", + "src": "6952:12:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -4230,12 +6642,12 @@ }, { "argumentTypes": null, - "id": 1502, + "id": 1921, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1492, - "src": "5890:7:3", + "referencedDeclaration": 1911, + "src": "6966:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4246,12 +6658,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1510, + "id": 1929, "name": "subtractedValue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1494, - "src": "5938:15:3", + "referencedDeclaration": 1913, + "src": "7014:15:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4260,14 +6672,14 @@ { "argumentTypes": null, "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", - "id": 1511, + "id": 1930, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5955:39:3", + "src": "7031:39:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", @@ -4293,35 +6705,35 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1503, + "id": 1922, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "5899:11:3", + "referencedDeclaration": 1548, + "src": "6975:11:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 1506, + "id": 1925, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 1504, + "id": 1923, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "5911:10:3", + "referencedDeclaration": 3606, + "src": "6987:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 1505, + "id": 1924, "isConstant": false, "isLValue": false, "isPure": false, @@ -4329,7 +6741,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5911:12:3", + "src": "6987:12:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -4341,21 +6753,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5899:25:3", + "src": "6975:25:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1508, + "id": 1927, "indexExpression": { "argumentTypes": null, - "id": 1507, + "id": 1926, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1492, - "src": "5925:7:3", + "referencedDeclaration": 1911, + "src": "7001:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4366,27 +6778,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5899:34:3", + "src": "6975:34:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1509, + "id": 1928, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 1825, - "src": "5899:38:3", + "referencedDeclaration": 2456, + "src": "6975:38:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 1512, + "id": 1931, "isConstant": false, "isLValue": false, "isPure": false, @@ -4394,7 +6806,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5899:96:3", + "src": "6975:96:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4417,18 +6829,18 @@ "typeString": "uint256" } ], - "id": 1499, + "id": 1918, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "5867:8:3", + "referencedDeclaration": 2135, + "src": "6943:8:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 1513, + "id": 1932, "isConstant": false, "isLValue": false, "isPure": false, @@ -4436,29 +6848,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5867:129:3", + "src": "6943:129:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1514, + "id": 1933, "nodeType": "ExpressionStatement", - "src": "5867:129:3" + "src": "6943:129:2" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1515, + "id": 1934, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "6013:4:3", + "src": "7089:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4466,21 +6878,21 @@ }, "value": "true" }, - "functionReturnParameters": 1498, - "id": 1516, + "functionReturnParameters": 1917, + "id": 1935, "nodeType": "Return", - "src": "6006:11:3" + "src": "7082:11:2" } ] }, "documentation": { - "id": 1490, + "id": 1909, "nodeType": "StructuredDocumentation", - "src": "5285:476:3", + "src": "6361:476:2", "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." }, "functionSelector": "a457c2d7", - "id": 1518, + "id": 1937, "implemented": true, "kind": "function", "modifiers": [], @@ -4488,18 +6900,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1495, + "id": 1914, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1492, + "id": 1911, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1518, - "src": "5793:15:3", + "scope": 1937, + "src": "6869:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4507,10 +6919,10 @@ "typeString": "address" }, "typeName": { - "id": 1491, + "id": 1910, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5793:7:3", + "src": "6869:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4522,13 +6934,13 @@ }, { "constant": false, - "id": 1494, + "id": 1913, "mutability": "mutable", "name": "subtractedValue", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1518, - "src": "5810:23:3", + "scope": 1937, + "src": "6886:23:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4536,10 +6948,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1493, + "id": 1912, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5810:7:3", + "src": "6886:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4549,21 +6961,21 @@ "visibility": "internal" } ], - "src": "5792:42:3" + "src": "6868:42:2" }, "returnParameters": { - "id": 1498, + "id": 1917, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1497, + "id": 1916, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1518, - "src": "5851:4:3", + "scope": 1937, + "src": "6927:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4571,10 +6983,10 @@ "typeString": "bool" }, "typeName": { - "id": 1496, + "id": 1915, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "5851:4:3", + "src": "6927:4:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4584,19 +6996,19 @@ "visibility": "internal" } ], - "src": "5850:6:3" + "src": "6926:6:2" }, - "scope": 1728, - "src": "5766:258:3", + "scope": 2147, + "src": "6842:258:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { - "id": 1577, + "id": 1996, "nodeType": "Block", - "src": "6577:385:3", + "src": "7653:385:2", "statements": [ { "expression": { @@ -4608,19 +7020,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1534, + "id": 1953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1529, + "id": 1948, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, - "src": "6595:6:3", + "referencedDeclaration": 1940, + "src": "7671:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4634,14 +7046,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1532, + "id": 1951, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6613:1:3", + "src": "7689:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4657,29 +7069,29 @@ "typeString": "int_const 0" } ], - "id": 1531, + "id": 1950, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6605:7:3", + "src": "7681:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 1530, + "id": 1949, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6605:7:3", + "src": "7681:7:2", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1533, + "id": 1952, "isConstant": false, "isLValue": false, "isPure": true, @@ -4687,14 +7099,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6605:10:3", + "src": "7681:10:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "6595:20:3", + "src": "7671:20:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4703,14 +7115,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", - "id": 1535, + "id": 1954, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6617:39:3", + "src": "7693:39:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", @@ -4730,18 +7142,18 @@ "typeString": "literal_string \"ERC20: transfer from the zero address\"" } ], - "id": 1528, + "id": 1947, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "6587:7:3", + "src": "7663:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1536, + "id": 1955, "isConstant": false, "isLValue": false, "isPure": false, @@ -4749,16 +7161,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6587:70:3", + "src": "7663:70:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1537, + "id": 1956, "nodeType": "ExpressionStatement", - "src": "6587:70:3" + "src": "7663:70:2" }, { "expression": { @@ -4770,19 +7182,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1544, + "id": 1963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1539, + "id": 1958, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1523, - "src": "6675:9:3", + "referencedDeclaration": 1942, + "src": "7751:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4796,14 +7208,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1542, + "id": 1961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6696:1:3", + "src": "7772:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4819,29 +7231,29 @@ "typeString": "int_const 0" } ], - "id": 1541, + "id": 1960, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6688:7:3", + "src": "7764:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 1540, + "id": 1959, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6688:7:3", + "src": "7764:7:2", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1543, + "id": 1962, "isConstant": false, "isLValue": false, "isPure": true, @@ -4849,14 +7261,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6688:10:3", + "src": "7764:10:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "6675:23:3", + "src": "7751:23:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4865,14 +7277,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", - "id": 1545, + "id": 1964, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6700:37:3", + "src": "7776:37:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", @@ -4892,18 +7304,18 @@ "typeString": "literal_string \"ERC20: transfer to the zero address\"" } ], - "id": 1538, + "id": 1957, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "6667:7:3", + "src": "7743:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1546, + "id": 1965, "isConstant": false, "isLValue": false, "isPure": false, @@ -4911,21 +7323,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6667:71:3", + "src": "7743:71:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1547, + "id": 1966, "nodeType": "ExpressionStatement", - "src": "6667:71:3" + "src": "7743:71:2" }, { "expression": { "argumentTypes": null, - "id": 1558, + "id": 1977, "isConstant": false, "isLValue": false, "isPure": false, @@ -4934,26 +7346,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1548, + "id": 1967, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "6749:9:3", + "referencedDeclaration": 1542, + "src": "7825:9:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1550, + "id": 1969, "indexExpression": { "argumentTypes": null, - "id": 1549, + "id": 1968, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, - "src": "6759:6:3", + "referencedDeclaration": 1940, + "src": "7835:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4964,7 +7376,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6749:17:3", + "src": "7825:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4977,12 +7389,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1555, + "id": 1974, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1525, - "src": "6791:6:3", + "referencedDeclaration": 1944, + "src": "7867:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4991,14 +7403,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", - "id": 1556, + "id": 1975, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6799:40:3", + "src": "7875:40:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", @@ -5022,26 +7434,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1551, + "id": 1970, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "6769:9:3", + "referencedDeclaration": 1542, + "src": "7845:9:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1553, + "id": 1972, "indexExpression": { "argumentTypes": null, - "id": 1552, + "id": 1971, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, - "src": "6779:6:3", + "referencedDeclaration": 1940, + "src": "7855:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5052,27 +7464,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6769:17:3", + "src": "7845:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1554, + "id": 1973, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 1825, - "src": "6769:21:3", + "referencedDeclaration": 2456, + "src": "7845:21:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 1557, + "id": 1976, "isConstant": false, "isLValue": false, "isPure": false, @@ -5080,27 +7492,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6769:71:3", + "src": "7845:71:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6749:91:3", + "src": "7825:91:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1559, + "id": 1978, "nodeType": "ExpressionStatement", - "src": "6749:91:3" + "src": "7825:91:2" }, { "expression": { "argumentTypes": null, - "id": 1569, + "id": 1988, "isConstant": false, "isLValue": false, "isPure": false, @@ -5109,26 +7521,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1560, + "id": 1979, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "6850:9:3", + "referencedDeclaration": 1542, + "src": "7926:9:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1562, + "id": 1981, "indexExpression": { "argumentTypes": null, - "id": 1561, + "id": 1980, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1523, - "src": "6860:9:3", + "referencedDeclaration": 1942, + "src": "7936:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5139,7 +7551,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6850:20:3", + "src": "7926:20:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5152,12 +7564,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1567, + "id": 1986, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1525, - "src": "6898:6:3", + "referencedDeclaration": 1944, + "src": "7974:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5175,26 +7587,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1563, + "id": 1982, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "6873:9:3", + "referencedDeclaration": 1542, + "src": "7949:9:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1565, + "id": 1984, "indexExpression": { "argumentTypes": null, - "id": 1564, + "id": 1983, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1523, - "src": "6883:9:3", + "referencedDeclaration": 1942, + "src": "7959:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5205,27 +7617,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6873:20:3", + "src": "7949:20:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1566, + "id": 1985, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1780, - "src": "6873:24:3", + "referencedDeclaration": 2332, + "src": "7949:24:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1568, + "id": 1987, "isConstant": false, "isLValue": false, "isPure": false, @@ -5233,22 +7645,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6873:32:3", + "src": "7949:32:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6850:55:3", + "src": "7926:55:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1570, + "id": 1989, "nodeType": "ExpressionStatement", - "src": "6850:55:3" + "src": "7926:55:2" }, { "eventCall": { @@ -5256,12 +7668,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1572, + "id": 1991, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, - "src": "6929:6:3", + "referencedDeclaration": 1940, + "src": "8005:6:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5269,12 +7681,12 @@ }, { "argumentTypes": null, - "id": 1573, + "id": 1992, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1523, - "src": "6937:9:3", + "referencedDeclaration": 1942, + "src": "8013:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5282,12 +7694,12 @@ }, { "argumentTypes": null, - "id": 1574, + "id": 1993, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1525, - "src": "6948:6:3", + "referencedDeclaration": 1944, + "src": "8024:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5309,18 +7721,18 @@ "typeString": "uint256" } ], - "id": 1571, + "id": 1990, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2015, - "src": "6920:8:3", + "referencedDeclaration": 3076, + "src": "7996:8:2", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 1575, + "id": 1994, "isConstant": false, "isLValue": false, "isPure": false, @@ -5328,26 +7740,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6920:35:3", + "src": "7996:35:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1576, + "id": 1995, "nodeType": "EmitStatement", - "src": "6915:40:3" + "src": "7991:40:2" } ] }, "documentation": { - "id": 1519, + "id": 1938, "nodeType": "StructuredDocumentation", - "src": "6030:463:3", + "src": "7106:463:2", "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`." }, - "id": 1578, + "id": 1997, "implemented": true, "kind": "function", "modifiers": [], @@ -5355,18 +7767,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1526, + "id": 1945, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1521, + "id": 1940, "mutability": "mutable", "name": "sender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1578, - "src": "6517:14:3", + "scope": 1997, + "src": "7593:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5374,10 +7786,10 @@ "typeString": "address" }, "typeName": { - "id": 1520, + "id": 1939, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6517:7:3", + "src": "7593:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5389,13 +7801,13 @@ }, { "constant": false, - "id": 1523, + "id": 1942, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1578, - "src": "6533:17:3", + "scope": 1997, + "src": "7609:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5403,10 +7815,10 @@ "typeString": "address" }, "typeName": { - "id": 1522, + "id": 1941, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6533:7:3", + "src": "7609:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5418,13 +7830,13 @@ }, { "constant": false, - "id": 1525, + "id": 1944, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1578, - "src": "6552:14:3", + "scope": 1997, + "src": "7628:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5432,10 +7844,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1524, + "id": 1943, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6552:7:3", + "src": "7628:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5445,25 +7857,25 @@ "visibility": "internal" } ], - "src": "6516:51:3" + "src": "7592:51:2" }, "returnParameters": { - "id": 1527, + "id": 1946, "nodeType": "ParameterList", "parameters": [], - "src": "6577:0:3" + "src": "7653:0:2" }, - "scope": 1728, - "src": "6498:464:3", + "scope": 2147, + "src": "7574:464:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { - "id": 1623, + "id": 2042, "nodeType": "Block", - "src": "7289:245:3", + "src": "8365:245:2", "statements": [ { "expression": { @@ -5475,19 +7887,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1592, + "id": 2011, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1587, + "id": 2006, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1581, - "src": "7307:7:3", + "referencedDeclaration": 2000, + "src": "8383:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5501,14 +7913,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1590, + "id": 2009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7326:1:3", + "src": "8402:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5524,29 +7936,29 @@ "typeString": "int_const 0" } ], - "id": 1589, + "id": 2008, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7318:7:3", + "src": "8394:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 1588, + "id": 2007, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7318:7:3", + "src": "8394:7:2", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1591, + "id": 2010, "isConstant": false, "isLValue": false, "isPure": true, @@ -5554,14 +7966,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7318:10:3", + "src": "8394:10:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "7307:21:3", + "src": "8383:21:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5570,14 +7982,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", - "id": 1593, + "id": 2012, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7330:33:3", + "src": "8406:33:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", @@ -5597,18 +8009,18 @@ "typeString": "literal_string \"ERC20: mint to the zero address\"" } ], - "id": 1586, + "id": 2005, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "7299:7:3", + "src": "8375:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1594, + "id": 2013, "isConstant": false, "isLValue": false, "isPure": false, @@ -5616,33 +8028,33 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7299:65:3", + "src": "8375:65:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1595, + "id": 2014, "nodeType": "ExpressionStatement", - "src": "7299:65:3" + "src": "8375:65:2" }, { "expression": { "argumentTypes": null, - "id": 1601, + "id": 2020, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1596, + "id": 2015, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "7375:12:3", + "referencedDeclaration": 1550, + "src": "8451:12:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5655,12 +8067,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1599, + "id": 2018, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1583, - "src": "7407:6:3", + "referencedDeclaration": 2002, + "src": "8483:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5676,32 +8088,32 @@ ], "expression": { "argumentTypes": null, - "id": 1597, + "id": 2016, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "7390:12:3", + "referencedDeclaration": 1550, + "src": "8466:12:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1598, + "id": 2017, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1780, - "src": "7390:16:3", + "referencedDeclaration": 2332, + "src": "8466:16:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1600, + "id": 2019, "isConstant": false, "isLValue": false, "isPure": false, @@ -5709,27 +8121,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7390:24:3", + "src": "8466:24:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7375:39:3", + "src": "8451:39:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1602, + "id": 2021, "nodeType": "ExpressionStatement", - "src": "7375:39:3" + "src": "8451:39:2" }, { "expression": { "argumentTypes": null, - "id": 1612, + "id": 2031, "isConstant": false, "isLValue": false, "isPure": false, @@ -5738,26 +8150,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1603, + "id": 2022, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "7424:9:3", + "referencedDeclaration": 1542, + "src": "8500:9:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1605, + "id": 2024, "indexExpression": { "argumentTypes": null, - "id": 1604, + "id": 2023, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1581, - "src": "7434:7:3", + "referencedDeclaration": 2000, + "src": "8510:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5768,7 +8180,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7424:18:3", + "src": "8500:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5781,12 +8193,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1610, + "id": 2029, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1583, - "src": "7468:6:3", + "referencedDeclaration": 2002, + "src": "8544:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5804,26 +8216,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1606, + "id": 2025, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "7445:9:3", + "referencedDeclaration": 1542, + "src": "8521:9:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1608, + "id": 2027, "indexExpression": { "argumentTypes": null, - "id": 1607, + "id": 2026, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1581, - "src": "7455:7:3", + "referencedDeclaration": 2000, + "src": "8531:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5834,27 +8246,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7445:18:3", + "src": "8521:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1609, + "id": 2028, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1780, - "src": "7445:22:3", + "referencedDeclaration": 2332, + "src": "8521:22:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1611, + "id": 2030, "isConstant": false, "isLValue": false, "isPure": false, @@ -5862,22 +8274,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7445:30:3", + "src": "8521:30:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7424:51:3", + "src": "8500:51:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1613, + "id": 2032, "nodeType": "ExpressionStatement", - "src": "7424:51:3" + "src": "8500:51:2" }, { "eventCall": { @@ -5889,14 +8301,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1617, + "id": 2036, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7507:1:3", + "src": "8583:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5912,29 +8324,29 @@ "typeString": "int_const 0" } ], - "id": 1616, + "id": 2035, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7499:7:3", + "src": "8575:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 1615, + "id": 2034, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7499:7:3", + "src": "8575:7:2", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1618, + "id": 2037, "isConstant": false, "isLValue": false, "isPure": true, @@ -5942,7 +8354,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7499:10:3", + "src": "8575:10:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -5951,12 +8363,12 @@ }, { "argumentTypes": null, - "id": 1619, + "id": 2038, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1581, - "src": "7511:7:3", + "referencedDeclaration": 2000, + "src": "8587:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5964,12 +8376,12 @@ }, { "argumentTypes": null, - "id": 1620, + "id": 2039, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1583, - "src": "7520:6:3", + "referencedDeclaration": 2002, + "src": "8596:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5991,18 +8403,18 @@ "typeString": "uint256" } ], - "id": 1614, + "id": 2033, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2015, - "src": "7490:8:3", + "referencedDeclaration": 3076, + "src": "8566:8:2", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 1621, + "id": 2040, "isConstant": false, "isLValue": false, "isPure": false, @@ -6010,26 +8422,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7490:37:3", + "src": "8566:37:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1622, + "id": 2041, "nodeType": "EmitStatement", - "src": "7485:42:3" + "src": "8561:42:2" } ] }, "documentation": { - "id": 1579, + "id": 1998, "nodeType": "StructuredDocumentation", - "src": "6968:259:3", + "src": "8044:259:2", "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements\n - `to` cannot be the zero address." }, - "id": 1624, + "id": 2043, "implemented": true, "kind": "function", "modifiers": [], @@ -6037,18 +8449,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1584, + "id": 2003, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1581, + "id": 2000, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1624, - "src": "7247:15:3", + "scope": 2043, + "src": "8323:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6056,10 +8468,10 @@ "typeString": "address" }, "typeName": { - "id": 1580, + "id": 1999, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7247:7:3", + "src": "8323:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6071,13 +8483,13 @@ }, { "constant": false, - "id": 1583, + "id": 2002, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1624, - "src": "7264:14:3", + "scope": 2043, + "src": "8340:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6085,10 +8497,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1582, + "id": 2001, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7264:7:3", + "src": "8340:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6098,25 +8510,25 @@ "visibility": "internal" } ], - "src": "7246:33:3" + "src": "8322:33:2" }, "returnParameters": { - "id": 1585, + "id": 2004, "nodeType": "ParameterList", "parameters": [], - "src": "7289:0:3" + "src": "8365:0:2" }, - "scope": 1728, - "src": "7232:302:3", + "scope": 2147, + "src": "8308:302:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { - "id": 1670, + "id": 2089, "nodeType": "Block", - "src": "7910:285:3", + "src": "8986:285:2", "statements": [ { "expression": { @@ -6128,19 +8540,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1638, + "id": 2057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1633, + "id": 2052, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "7928:7:3", + "referencedDeclaration": 2046, + "src": "9004:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6154,14 +8566,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1636, + "id": 2055, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7947:1:3", + "src": "9023:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6177,29 +8589,29 @@ "typeString": "int_const 0" } ], - "id": 1635, + "id": 2054, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7939:7:3", + "src": "9015:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 1634, + "id": 2053, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7939:7:3", + "src": "9015:7:2", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1637, + "id": 2056, "isConstant": false, "isLValue": false, "isPure": true, @@ -6207,14 +8619,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7939:10:3", + "src": "9015:10:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "7928:21:3", + "src": "9004:21:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6223,14 +8635,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", - "id": 1639, + "id": 2058, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7951:35:3", + "src": "9027:35:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", @@ -6250,18 +8662,18 @@ "typeString": "literal_string \"ERC20: burn from the zero address\"" } ], - "id": 1632, + "id": 2051, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "7920:7:3", + "src": "8996:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1640, + "id": 2059, "isConstant": false, "isLValue": false, "isPure": false, @@ -6269,21 +8681,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7920:67:3", + "src": "8996:67:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1641, + "id": 2060, "nodeType": "ExpressionStatement", - "src": "7920:67:3" + "src": "8996:67:2" }, { "expression": { "argumentTypes": null, - "id": 1652, + "id": 2071, "isConstant": false, "isLValue": false, "isPure": false, @@ -6292,26 +8704,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1642, + "id": 2061, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "7998:9:3", + "referencedDeclaration": 1542, + "src": "9074:9:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1644, + "id": 2063, "indexExpression": { "argumentTypes": null, - "id": 1643, + "id": 2062, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "8008:7:3", + "referencedDeclaration": 2046, + "src": "9084:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6322,7 +8734,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7998:18:3", + "src": "9074:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6335,12 +8747,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1649, + "id": 2068, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1629, - "src": "8042:6:3", + "referencedDeclaration": 2048, + "src": "9118:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6349,14 +8761,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", - "id": 1650, + "id": 2069, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8050:36:3", + "src": "9126:36:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", @@ -6380,26 +8792,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1645, + "id": 2064, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "8019:9:3", + "referencedDeclaration": 1542, + "src": "9095:9:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1647, + "id": 2066, "indexExpression": { "argumentTypes": null, - "id": 1646, + "id": 2065, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "8029:7:3", + "referencedDeclaration": 2046, + "src": "9105:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6410,27 +8822,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8019:18:3", + "src": "9095:18:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1648, + "id": 2067, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 1825, - "src": "8019:22:3", + "referencedDeclaration": 2456, + "src": "9095:22:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 1651, + "id": 2070, "isConstant": false, "isLValue": false, "isPure": false, @@ -6438,39 +8850,39 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8019:68:3", + "src": "9095:68:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7998:89:3", + "src": "9074:89:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1653, + "id": 2072, "nodeType": "ExpressionStatement", - "src": "7998:89:3" + "src": "9074:89:2" }, { "expression": { "argumentTypes": null, - "id": 1659, + "id": 2078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1654, + "id": 2073, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "8097:12:3", + "referencedDeclaration": 1550, + "src": "9173:12:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6483,12 +8895,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1657, + "id": 2076, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1629, - "src": "8129:6:3", + "referencedDeclaration": 2048, + "src": "9205:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6504,32 +8916,32 @@ ], "expression": { "argumentTypes": null, - "id": 1655, + "id": 2074, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "8112:12:3", + "referencedDeclaration": 1550, + "src": "9188:12:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1656, + "id": 2075, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 1797, - "src": "8112:16:3", + "referencedDeclaration": 2354, + "src": "9188:16:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1658, + "id": 2077, "isConstant": false, "isLValue": false, "isPure": false, @@ -6537,22 +8949,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8112:24:3", + "src": "9188:24:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8097:39:3", + "src": "9173:39:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1660, + "id": 2079, "nodeType": "ExpressionStatement", - "src": "8097:39:3" + "src": "9173:39:2" }, { "eventCall": { @@ -6560,12 +8972,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1662, + "id": 2081, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "8160:7:3", + "referencedDeclaration": 2046, + "src": "9236:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6577,14 +8989,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1665, + "id": 2084, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8177:1:3", + "src": "9253:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6600,29 +9012,29 @@ "typeString": "int_const 0" } ], - "id": 1664, + "id": 2083, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8169:7:3", + "src": "9245:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 1663, + "id": 2082, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8169:7:3", + "src": "9245:7:2", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1666, + "id": 2085, "isConstant": false, "isLValue": false, "isPure": true, @@ -6630,7 +9042,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8169:10:3", + "src": "9245:10:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -6639,12 +9051,12 @@ }, { "argumentTypes": null, - "id": 1667, + "id": 2086, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1629, - "src": "8181:6:3", + "referencedDeclaration": 2048, + "src": "9257:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6666,18 +9078,18 @@ "typeString": "uint256" } ], - "id": 1661, + "id": 2080, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2015, - "src": "8151:8:3", + "referencedDeclaration": 3076, + "src": "9227:8:2", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 1668, + "id": 2087, "isConstant": false, "isLValue": false, "isPure": false, @@ -6685,26 +9097,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8151:37:3", + "src": "9227:37:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1669, + "id": 2088, "nodeType": "EmitStatement", - "src": "8146:42:3" + "src": "9222:42:2" } ] }, "documentation": { - "id": 1625, + "id": 2044, "nodeType": "StructuredDocumentation", - "src": "7540:308:3", + "src": "8616:308:2", "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." }, - "id": 1671, + "id": 2090, "implemented": true, "kind": "function", "modifiers": [], @@ -6712,18 +9124,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1630, + "id": 2049, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1627, + "id": 2046, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1671, - "src": "7868:15:3", + "scope": 2090, + "src": "8944:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6731,10 +9143,10 @@ "typeString": "address" }, "typeName": { - "id": 1626, + "id": 2045, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7868:7:3", + "src": "8944:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6746,13 +9158,13 @@ }, { "constant": false, - "id": 1629, + "id": 2048, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1671, - "src": "7885:14:3", + "scope": 2090, + "src": "8961:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6760,10 +9172,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1628, + "id": 2047, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7885:7:3", + "src": "8961:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6773,25 +9185,25 @@ "visibility": "internal" } ], - "src": "7867:33:3" + "src": "8943:33:2" }, "returnParameters": { - "id": 1631, + "id": 2050, "nodeType": "ParameterList", "parameters": [], - "src": "7910:0:3" + "src": "8986:0:2" }, - "scope": 1728, - "src": "7853:342:3", + "scope": 2147, + "src": "8929:342:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { - "id": 1715, + "id": 2134, "nodeType": "Block", - "src": "8695:257:3", + "src": "9771:257:2", "statements": [ { "expression": { @@ -6803,19 +9215,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1687, + "id": 2106, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1682, + "id": 2101, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1674, - "src": "8713:5:3", + "referencedDeclaration": 2093, + "src": "9789:5:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6829,14 +9241,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1685, + "id": 2104, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8730:1:3", + "src": "9806:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6852,29 +9264,29 @@ "typeString": "int_const 0" } ], - "id": 1684, + "id": 2103, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8722:7:3", + "src": "9798:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 1683, + "id": 2102, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8722:7:3", + "src": "9798:7:2", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1686, + "id": 2105, "isConstant": false, "isLValue": false, "isPure": true, @@ -6882,14 +9294,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8722:10:3", + "src": "9798:10:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "8713:19:3", + "src": "9789:19:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6898,14 +9310,14 @@ { "argumentTypes": null, "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", - "id": 1688, + "id": 2107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8734:38:3", + "src": "9810:38:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", @@ -6925,18 +9337,18 @@ "typeString": "literal_string \"ERC20: approve from the zero address\"" } ], - "id": 1681, + "id": 2100, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "8705:7:3", + "src": "9781:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1689, + "id": 2108, "isConstant": false, "isLValue": false, "isPure": false, @@ -6944,16 +9356,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8705:68:3", + "src": "9781:68:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1690, + "id": 2109, "nodeType": "ExpressionStatement", - "src": "8705:68:3" + "src": "9781:68:2" }, { "expression": { @@ -6965,19 +9377,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1697, + "id": 2116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1692, + "id": 2111, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "8791:7:3", + "referencedDeclaration": 2095, + "src": "9867:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6991,14 +9403,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1695, + "id": 2114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8810:1:3", + "src": "9886:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7014,29 +9426,29 @@ "typeString": "int_const 0" } ], - "id": 1694, + "id": 2113, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8802:7:3", + "src": "9878:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 1693, + "id": 2112, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8802:7:3", + "src": "9878:7:2", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, - "id": 1696, + "id": 2115, "isConstant": false, "isLValue": false, "isPure": true, @@ -7044,14 +9456,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8802:10:3", + "src": "9878:10:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "8791:21:3", + "src": "9867:21:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7060,14 +9472,14 @@ { "argumentTypes": null, "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", - "id": 1698, + "id": 2117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8814:36:3", + "src": "9890:36:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", @@ -7087,18 +9499,18 @@ "typeString": "literal_string \"ERC20: approve to the zero address\"" } ], - "id": 1691, + "id": 2110, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, - "src": "8783:7:3", + "src": "9859:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1699, + "id": 2118, "isConstant": false, "isLValue": false, "isPure": false, @@ -7106,21 +9518,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8783:68:3", + "src": "9859:68:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1700, + "id": 2119, "nodeType": "ExpressionStatement", - "src": "8783:68:3" + "src": "9859:68:2" }, { "expression": { "argumentTypes": null, - "id": 1707, + "id": 2126, "isConstant": false, "isLValue": false, "isPure": false, @@ -7131,26 +9543,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1701, + "id": 2120, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "8862:11:3", + "referencedDeclaration": 1548, + "src": "9938:11:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 1704, + "id": 2123, "indexExpression": { "argumentTypes": null, - "id": 1702, + "id": 2121, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1674, - "src": "8874:5:3", + "referencedDeclaration": 2093, + "src": "9950:5:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7161,21 +9573,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8862:18:3", + "src": "9938:18:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 1705, + "id": 2124, "indexExpression": { "argumentTypes": null, - "id": 1703, + "id": 2122, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "8881:7:3", + "referencedDeclaration": 2095, + "src": "9957:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7186,7 +9598,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "8862:27:3", + "src": "9938:27:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7196,26 +9608,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1706, + "id": 2125, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "8892:6:3", + "referencedDeclaration": 2097, + "src": "9968:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8862:36:3", + "src": "9938:36:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1708, + "id": 2127, "nodeType": "ExpressionStatement", - "src": "8862:36:3" + "src": "9938:36:2" }, { "eventCall": { @@ -7223,12 +9635,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1710, + "id": 2129, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1674, - "src": "8922:5:3", + "referencedDeclaration": 2093, + "src": "9998:5:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7236,12 +9648,12 @@ }, { "argumentTypes": null, - "id": 1711, + "id": 2130, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "8929:7:3", + "referencedDeclaration": 2095, + "src": "10005:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7249,12 +9661,12 @@ }, { "argumentTypes": null, - "id": 1712, + "id": 2131, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "8938:6:3", + "referencedDeclaration": 2097, + "src": "10014:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7276,18 +9688,18 @@ "typeString": "uint256" } ], - "id": 1709, + "id": 2128, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2024, - "src": "8913:8:3", + "referencedDeclaration": 3085, + "src": "9989:8:2", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 1713, + "id": 2132, "isConstant": false, "isLValue": false, "isPure": false, @@ -7295,26 +9707,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8913:32:3", + "src": "9989:32:2", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1714, + "id": 2133, "nodeType": "EmitStatement", - "src": "8908:37:3" + "src": "9984:37:2" } ] }, "documentation": { - "id": 1672, + "id": 2091, "nodeType": "StructuredDocumentation", - "src": "8201:414:3", + "src": "9277:414:2", "text": " @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n This is internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." }, - "id": 1716, + "id": 2135, "implemented": true, "kind": "function", "modifiers": [], @@ -7322,18 +9734,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1679, + "id": 2098, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1674, + "id": 2093, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1716, - "src": "8638:13:3", + "scope": 2135, + "src": "9714:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7341,10 +9753,10 @@ "typeString": "address" }, "typeName": { - "id": 1673, + "id": 2092, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8638:7:3", + "src": "9714:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7356,13 +9768,13 @@ }, { "constant": false, - "id": 1676, + "id": 2095, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1716, - "src": "8653:15:3", + "scope": 2135, + "src": "9729:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7370,10 +9782,10 @@ "typeString": "address" }, "typeName": { - "id": 1675, + "id": 2094, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8653:7:3", + "src": "9729:7:2", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7385,13 +9797,13 @@ }, { "constant": false, - "id": 1678, + "id": 2097, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1716, - "src": "8670:14:3", + "scope": 2135, + "src": "9746:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7399,10 +9811,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1677, + "id": 2096, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "8670:7:3", + "src": "9746:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7412,42 +9824,42 @@ "visibility": "internal" } ], - "src": "8637:48:3" + "src": "9713:48:2" }, "returnParameters": { - "id": 1680, + "id": 2099, "nodeType": "ParameterList", "parameters": [], - "src": "8695:0:3" + "src": "9771:0:2" }, - "scope": 1728, - "src": "8620:332:3", + "scope": 2147, + "src": "9696:332:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { - "id": 1726, + "id": 2145, "nodeType": "Block", - "src": "9325:38:3", + "src": "10401:38:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 1724, + "id": 2143, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1722, + "id": 2141, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1312, - "src": "9335:9:3", + "referencedDeclaration": 1555, + "src": "10411:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7457,36 +9869,36 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1723, + "id": 2142, "name": "decimals_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1719, - "src": "9347:9:3", + "referencedDeclaration": 2138, + "src": "10423:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "9335:21:3", + "src": "10411:21:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1725, + "id": 2144, "nodeType": "ExpressionStatement", - "src": "9335:21:3" + "src": "10411:21:2" } ] }, "documentation": { - "id": 1717, + "id": 2136, "nodeType": "StructuredDocumentation", - "src": "8958:312:3", + "src": "10034:312:2", "text": " @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does." }, - "id": 1727, + "id": 2146, "implemented": true, "kind": "function", "modifiers": [], @@ -7494,18 +9906,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 1720, + "id": 2139, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1719, + "id": 2138, "mutability": "mutable", "name": "decimals_", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 1727, - "src": "9299:15:3", + "scope": 2146, + "src": "10375:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7513,10 +9925,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1718, + "id": 2137, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "9299:5:3", + "src": "10375:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7526,7195 +9938,9889 @@ "visibility": "internal" } ], - "src": "9298:17:3" + "src": "10374:17:2" }, "returnParameters": { - "id": 1721, + "id": 2140, "nodeType": "ParameterList", "parameters": [], - "src": "9325:0:3" + "src": "10401:0:2" }, - "scope": 1728, - "src": "9275:88:3", + "scope": 2147, + "src": "10351:88:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" } ], - "scope": 1729, - "src": "304:9061:3" + "scope": 2148, + "src": "304:10137:2" } ], - "src": "67:9299:3" + "src": "67:10375:2" }, "legacyAST": { - "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol", - "exportedSymbols": { - "WrappedAsset": [1728] + "attributes": { + "absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol", + "exportedSymbols": { + "WrappedAsset": [2147] + }, + "license": "Apache 2" }, - "id": 1729, - "license": "Apache 2", - "nodeType": "SourceUnit", - "nodes": [ + "children": [ { - "id": 1186, - "literals": ["solidity", "^", "0.6", ".0"], - "nodeType": "PragmaDirective", - "src": "67:23:3" + "attributes": { + "literals": ["solidity", "^", "0.6", ".0"] + }, + "id": 1433, + "name": "PragmaDirective", + "src": "67:23:2" }, { - "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "id": 1187, - "nodeType": "ImportDirective", - "scope": 1729, - "sourceUnit": 2026, - "src": "92:56:3", - "symbolAliases": [], - "unitAlias": "" + "attributes": { + "SourceUnit": 3087, + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "scope": 2148, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 1434, + "name": "ImportDirective", + "src": "92:56:2" }, { - "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", - "file": "@openzeppelin/contracts/math/SafeMath.sol", - "id": 1188, - "nodeType": "ImportDirective", - "scope": 1729, - "sourceUnit": 1948, - "src": "149:51:3", - "symbolAliases": [], - "unitAlias": "" + "attributes": { + "SourceUnit": 2506, + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "file": "@openzeppelin/contracts/math/SafeMath.sol", + "scope": 2148, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 1435, + "name": "ImportDirective", + "src": "149:51:2" }, { - "absolutePath": "@openzeppelin/contracts/utils/Address.sol", - "file": "@openzeppelin/contracts/utils/Address.sol", - "id": 1189, - "nodeType": "ImportDirective", - "scope": 1729, - "sourceUnit": 2443, - "src": "201:51:3", - "symbolAliases": [], - "unitAlias": "" + "attributes": { + "SourceUnit": 3596, + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "scope": 2148, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 1436, + "name": "ImportDirective", + "src": "201:51:2" }, { - "absolutePath": "@openzeppelin/contracts/GSN/Context.sol", - "file": "@openzeppelin/contracts/GSN/Context.sol", - "id": 1190, - "nodeType": "ImportDirective", - "scope": 1729, - "sourceUnit": 1752, - "src": "253:49:3", - "symbolAliases": [], - "unitAlias": "" + "attributes": { + "SourceUnit": 2151, + "absolutePath": "@openzeppelin/contracts/GSN/Context.sol", + "file": "@openzeppelin/contracts/GSN/Context.sol", + "scope": 2148, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 1437, + "name": "ImportDirective", + "src": "253:49:2" }, { - "abstract": false, - "baseContracts": [ + "attributes": { + "abstract": false, + "contractDependencies": [3086, 3618], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "linearizedBaseContracts": [2147, 3618, 3086], + "name": "WrappedAsset", + "scope": 2148 + }, + "children": [ { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 1191, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2025, - "src": "329:6:3", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$2025", - "typeString": "contract IERC20" - } + "attributes": { + "arguments": null }, - "id": 1192, - "nodeType": "InheritanceSpecifier", - "src": "329:6:3" + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IERC20", + "referencedDeclaration": 3086, + "type": "contract IERC20" + }, + "id": 1438, + "name": "UserDefinedTypeName", + "src": "329:6:2" + } + ], + "id": 1439, + "name": "InheritanceSpecifier", + "src": "329:6:2" }, { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 1193, - "name": "Context", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1751, - "src": "337:7:3", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$1751", - "typeString": "contract Context" + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Context", + "referencedDeclaration": 3618, + "type": "contract Context" + }, + "id": 1440, + "name": "UserDefinedTypeName", + "src": "337:7:2" } - }, - "id": 1194, - "nodeType": "InheritanceSpecifier", - "src": "337:7:3" - } - ], - "contractDependencies": [1751, 2025], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 1728, - "linearizedBaseContracts": [1728, 1751, 2025], - "name": "WrappedAsset", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "functionSelector": "026b0539", - "id": 1196, - "mutability": "mutable", - "name": "assetChain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1728, - "src": "351:23:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1195, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "351:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "public" + ], + "id": 1441, + "name": "InheritanceSpecifier", + "src": "337:7:2" }, { - "constant": false, - "functionSelector": "1ba46cfd", - "id": 1198, - "mutability": "mutable", - "name": "assetAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1728, - "src": "380:27:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "attributes": { + "constant": false, + "functionSelector": "026b0539", + "mutability": "mutable", + "name": "assetChain", + "overrides": null, + "scope": 2147, + "stateVariable": true, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "public" }, - "typeName": { - "id": 1197, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "380:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1442, + "name": "ElementaryTypeName", + "src": "351:5:2" } - }, - "value": null, - "visibility": "public" + ], + "id": 1443, + "name": "VariableDeclaration", + "src": "351:23:2" }, { - "constant": false, - "functionSelector": "158ef93e", - "id": 1200, - "mutability": "mutable", - "name": "initialized", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1728, - "src": "413:23:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "attributes": { + "constant": false, + "functionSelector": "1ba46cfd", + "mutability": "mutable", + "name": "assetAddress", + "overrides": null, + "scope": 2147, + "stateVariable": true, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "public" }, - "typeName": { - "id": 1199, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "413:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 1444, + "name": "ElementaryTypeName", + "src": "380:7:2" } - }, - "value": null, - "visibility": "public" + ], + "id": 1445, + "name": "VariableDeclaration", + "src": "380:27:2" }, { - "constant": false, - "functionSelector": "e78cea92", - "id": 1202, - "mutability": "mutable", - "name": "bridge", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1728, - "src": "442:21:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "attributes": { + "constant": false, + "functionSelector": "158ef93e", + "mutability": "mutable", + "name": "initialized", + "overrides": null, + "scope": 2147, + "stateVariable": true, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "public" }, - "typeName": { - "id": 1201, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "442:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 1446, + "name": "ElementaryTypeName", + "src": "413:4:2" } - }, - "value": null, - "visibility": "public" + ], + "id": 1447, + "name": "VariableDeclaration", + "src": "413:23:2" }, { - "body": { - "id": 1244, - "nodeType": "Block", - "src": "539:304:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1211, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "557:12:3", - "subExpression": { - "argumentTypes": null, - "id": 1210, - "name": "initialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "558:11:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "616c726561647920696e697469616c697a6564", - "id": 1212, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "571:21:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc", - "typeString": "literal_string \"already initialized\"" - }, - "value": "already initialized" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc", - "typeString": "literal_string \"already initialized\"" - } - ], - "id": 1209, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "549:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1213, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "549:44:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1214, - "nodeType": "ExpressionStatement", - "src": "549:44:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1217, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1215, - "name": "assetChain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1196, - "src": "631:10:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1216, - "name": "_assetChain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1204, - "src": "644:11:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "631:24:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 1218, - "nodeType": "ExpressionStatement", - "src": "631:24:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1219, - "name": "assetAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1198, - "src": "665:12:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1220, - "name": "_assetAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1206, - "src": "680:13:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "665:28:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1222, - "nodeType": "ExpressionStatement", - "src": "665:28:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1223, - "name": "bridge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1202, - "src": "703:6:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1224, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "712:3:3", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1225, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "712:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "703:19:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1227, - "nodeType": "ExpressionStatement", - "src": "703:19:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1230, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1228, - "name": "initialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "732:11:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1229, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "746:4:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "732:18:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1231, - "nodeType": "ExpressionStatement", - "src": "732:18:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1234, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1232, - "name": "_name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1307, - "src": "761:5:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "576f726d686f6c652057726170706564", - "id": 1233, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "769:18:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_7fba8604b126ac0f54fd4def8e15fd26e2df8bb510be08aa6c2c8a7c813171ee", - "typeString": "literal_string \"Wormhole Wrapped\"" - }, - "value": "Wormhole Wrapped" - }, - "src": "761:26:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "id": 1235, - "nodeType": "ExpressionStatement", - "src": "761:26:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1236, - "name": "_symbol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1309, - "src": "797:7:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "575754", - "id": 1237, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "807:5:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0d2d5a94d86195c9aab1dc351352ba0539c6da454bc9b63f5012e79c7d2d46e2", - "typeString": "literal_string \"WWT\"" - }, - "value": "WWT" - }, - "src": "797:15:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "id": 1239, - "nodeType": "ExpressionStatement", - "src": "797:15:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1242, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1240, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1312, - "src": "822:9:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "3138", - "id": 1241, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "834:2:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "src": "822:14:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 1243, - "nodeType": "ExpressionStatement", - "src": "822:14:3" - } - ] + "attributes": { + "constant": false, + "functionSelector": "e78cea92", + "mutability": "mutable", + "name": "bridge", + "overrides": null, + "scope": 2147, + "stateVariable": true, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "public" }, - "documentation": null, - "functionSelector": "02a09585", - "id": 1245, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "initialize", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1207, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1204, - "mutability": "mutable", - "name": "_assetChain", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1245, - "src": "490:17:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1203, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "490:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1206, - "mutability": "mutable", - "name": "_assetAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1245, - "src": "509:21:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1205, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "509:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "489:42:3" - }, - "returnParameters": { - "id": 1208, - "nodeType": "ParameterList", - "parameters": [], - "src": "539:0:3" - }, - "scope": 1728, - "src": "470:373:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1265, - "nodeType": "Block", - "src": "905:120:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1256, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1253, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "923:3:3", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1254, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "923:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1255, - "name": "bridge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1202, - "src": "937:6:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "923:20:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6d696e742063616e206f6e6c792062652063616c6c65642062792074686520627269646765", - "id": 1257, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "945:39:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e7702acf154d2f82cc8c1dd52813f94b0a08ea733aaf89d0cac26f6b55722c5a", - "typeString": "literal_string \"mint can only be called by the bridge\"" - }, - "value": "mint can only be called by the bridge" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e7702acf154d2f82cc8c1dd52813f94b0a08ea733aaf89d0cac26f6b55722c5a", - "typeString": "literal_string \"mint can only be called by the bridge\"" - } - ], - "id": 1252, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "915:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1258, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "915:70:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1259, - "nodeType": "ExpressionStatement", - "src": "915:70:3" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1261, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "1002:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1262, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "1011:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1260, - "name": "_mint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1624, - "src": "996:5:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 1263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "996:22:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1264, - "nodeType": "ExpressionStatement", - "src": "996:22:3" - } - ] - }, - "documentation": null, - "functionSelector": "40c10f19", - "id": 1266, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "mint", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1250, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1247, - "mutability": "mutable", - "name": "account", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1266, - "src": "863:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1246, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "863:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1249, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1266, - "src": "880:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1248, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "880:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "862:33:3" - }, - "returnParameters": { - "id": 1251, - "nodeType": "ParameterList", - "parameters": [], - "src": "905:0:3" - }, - "scope": 1728, - "src": "849:176:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 1286, - "nodeType": "Block", - "src": "1087:120:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1277, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1274, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1105:3:3", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1275, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1105:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1276, - "name": "bridge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1202, - "src": "1119:6:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1105:20:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6275726e2063616e206f6e6c792062652063616c6c65642062792074686520627269646765", - "id": 1278, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1127:39:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c31242aa9df4d29364b074986b1202ec8729deca727157a31be5e2473387893b", - "typeString": "literal_string \"burn can only be called by the bridge\"" - }, - "value": "burn can only be called by the bridge" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c31242aa9df4d29364b074986b1202ec8729deca727157a31be5e2473387893b", - "typeString": "literal_string \"burn can only be called by the bridge\"" - } - ], - "id": 1273, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "1097:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1279, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1097:70:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1280, - "nodeType": "ExpressionStatement", - "src": "1097:70:3" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1282, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1268, - "src": "1184:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1283, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1270, - "src": "1193:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1281, - "name": "_burn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1671, - "src": "1178:5:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 1284, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1178:22:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1285, - "nodeType": "ExpressionStatement", - "src": "1178:22:3" - } - ] - }, - "documentation": null, - "functionSelector": "9dc29fac", - "id": 1287, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "burn", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1271, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1268, - "mutability": "mutable", - "name": "account", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1287, - "src": "1045:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1267, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1045:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1270, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1287, - "src": "1062:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1269, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1062:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1044:33:3" - }, - "returnParameters": { - "id": 1272, - "nodeType": "ParameterList", - "parameters": [], - "src": "1087:0:3" - }, - "scope": 1728, - "src": "1031:176:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 1290, - "libraryName": { - "contractScope": null, - "id": 1288, - "name": "SafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1947, - "src": "1363:8:3", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1947", - "typeString": "library SafeMath" - } - }, - "nodeType": "UsingForDirective", - "src": "1357:27:3", - "typeName": { - "id": 1289, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1376:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "id": 1293, - "libraryName": { - "contractScope": null, - "id": 1291, - "name": "Address", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2442, - "src": "1395:7:3", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Address_$2442", - "typeString": "library Address" - } - }, - "nodeType": "UsingForDirective", - "src": "1389:26:3", - "typeName": { - "id": 1292, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1407:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "constant": false, - "id": 1297, - "mutability": "mutable", - "name": "_balances", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1728, - "src": "1421:45:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "typeName": { - "id": 1296, - "keyType": { - "id": 1294, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1429:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1421:27:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueType": { - "id": 1295, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1440:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 1303, - "mutability": "mutable", - "name": "_allowances", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1728, - "src": "1473:67:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - }, - "typeName": { - "id": 1302, - "keyType": { - "id": 1298, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1481:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1473:47:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - }, - "valueType": { - "id": 1301, - "keyType": { - "id": 1299, + "children": [ + { + "attributes": { "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1500:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "stateMutability": "nonpayable", + "type": "address" }, - "nodeType": "Mapping", - "src": "1492:27:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueType": { - "id": 1300, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1511:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "id": 1448, + "name": "ElementaryTypeName", + "src": "442:7:2" + } + ], + "id": 1449, + "name": "VariableDeclaration", + "src": "442:21:2" + }, + { + "attributes": { + "documentation": null, + "functionSelector": "a7a2d3fb", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "initialize", + "overrides": null, + "scope": 2147, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_assetChain", + "overrides": null, + "scope": 1490, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1450, + "name": "ElementaryTypeName", + "src": "490:5:2" + } + ], + "id": 1451, + "name": "VariableDeclaration", + "src": "490:17:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_assetAddress", + "overrides": null, + "scope": 1490, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 1452, + "name": "ElementaryTypeName", + "src": "509:7:2" + } + ], + "id": 1453, + "name": "VariableDeclaration", + "src": "509:21:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "decimals", + "overrides": null, + "scope": 1490, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1454, + "name": "ElementaryTypeName", + "src": "532:5:2" + } + ], + "id": 1455, + "name": "VariableDeclaration", + "src": "532:14:2" } - } - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 1305, - "mutability": "mutable", - "name": "_totalSupply", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1728, - "src": "1547:28:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1304, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1547:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 1307, - "mutability": "mutable", - "name": "_name", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1728, - "src": "1582:20:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string" - }, - "typeName": { - "id": 1306, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1582:6:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 1309, - "mutability": "mutable", - "name": "_symbol", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1728, - "src": "1608:22:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string" - }, - "typeName": { - "id": 1308, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1608:6:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 1312, - "mutability": "mutable", - "name": "_decimals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1728, - "src": "1636:28:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1310, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1636:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "3138", - "id": 1311, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1662:2:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + ], + "id": 1456, + "name": "ParameterList", + "src": "489:58:2" }, - "value": "18" - }, - "visibility": "private" - }, - { - "body": { - "id": 1320, - "nodeType": "Block", - "src": "1782:29:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1318, - "name": "_name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1307, - "src": "1799:5:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "functionReturnParameters": 1317, - "id": 1319, - "nodeType": "Return", - "src": "1792:12:3" - } - ] - }, - "documentation": { - "id": 1313, - "nodeType": "StructuredDocumentation", - "src": "1671:54:3", - "text": " @dev Returns the name of the token." - }, - "functionSelector": "06fdde03", - "id": 1321, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "name", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1314, - "nodeType": "ParameterList", - "parameters": [], - "src": "1743:2:3" - }, - "returnParameters": { - "id": 1317, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1316, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1321, - "src": "1767:13:3", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 1315, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1767:6:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1766:15:3" - }, - "scope": 1728, - "src": "1730:81:3", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1329, - "nodeType": "Block", - "src": "1978:31:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1327, - "name": "_symbol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1309, - "src": "1995:7:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "functionReturnParameters": 1326, - "id": 1328, - "nodeType": "Return", - "src": "1988:14:3" - } - ] - }, - "documentation": { - "id": 1322, - "nodeType": "StructuredDocumentation", - "src": "1817:102:3", - "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." - }, - "functionSelector": "95d89b41", - "id": 1330, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "symbol", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1323, - "nodeType": "ParameterList", - "parameters": [], - "src": "1939:2:3" - }, - "returnParameters": { - "id": 1326, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1325, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1330, - "src": "1963:13:3", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 1324, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1963:6:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1962:15:3" - }, - "scope": 1728, - "src": "1924:85:3", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1338, - "nodeType": "Block", - "src": "2680:33:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1336, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1312, - "src": "2697:9:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "functionReturnParameters": 1335, - "id": 1337, - "nodeType": "Return", - "src": "2690:16:3" - } - ] - }, - "documentation": { - "id": 1331, - "nodeType": "StructuredDocumentation", - "src": "2015:612:3", - "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." - }, - "functionSelector": "313ce567", - "id": 1339, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "decimals", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1332, - "nodeType": "ParameterList", - "parameters": [], - "src": "2649:2:3" - }, - "returnParameters": { - "id": 1335, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1334, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1339, - "src": "2673:5:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1333, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2673:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2672:7:3" - }, - "scope": 1728, - "src": "2632:81:3", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "baseFunctions": [1956], - "body": { - "id": 1348, - "nodeType": "Block", - "src": "2835:36:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1346, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "2852:12:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1345, - "id": 1347, - "nodeType": "Return", - "src": "2845:19:3" - } - ] - }, - "documentation": { - "id": 1340, - "nodeType": "StructuredDocumentation", - "src": "2719:49:3", - "text": " @dev See {IERC20-totalSupply}." - }, - "functionSelector": "18160ddd", - "id": 1349, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "totalSupply", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 1342, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2808:8:3" - }, - "parameters": { - "id": 1341, - "nodeType": "ParameterList", - "parameters": [], - "src": "2793:2:3" - }, - "returnParameters": { - "id": 1345, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1344, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1349, - "src": "2826:7:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1343, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2826:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2825:9:3" - }, - "scope": 1728, - "src": "2773:98:3", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "baseFunctions": [1964], - "body": { - "id": 1362, - "nodeType": "Block", - "src": "3004:42:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1358, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "3021:9:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 1360, - "indexExpression": { - "argumentTypes": null, - "id": 1359, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1352, - "src": "3031:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3021:18:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1357, - "id": 1361, - "nodeType": "Return", - "src": "3014:25:3" - } - ] - }, - "documentation": { - "id": 1350, - "nodeType": "StructuredDocumentation", - "src": "2877:47:3", - "text": " @dev See {IERC20-balanceOf}." - }, - "functionSelector": "70a08231", - "id": 1363, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "balanceOf", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 1354, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2977:8:3" - }, - "parameters": { - "id": 1353, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1352, - "mutability": "mutable", - "name": "account", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1363, - "src": "2948:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1351, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2948:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2947:17:3" - }, - "returnParameters": { - "id": 1357, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1356, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1363, - "src": "2995:7:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1355, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2995:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2994:9:3" - }, - "scope": 1728, - "src": "2929:117:3", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "baseFunctions": [1974], - "body": { - "id": 1383, - "nodeType": "Block", - "src": "3333:80:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1375, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "3353:10:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 1376, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3353:12:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 1377, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1366, - "src": "3367:9:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1378, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1368, - "src": "3378:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1374, - "name": "_transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1578, - "src": "3343:9:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 1379, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3343:42:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1380, - "nodeType": "ExpressionStatement", - "src": "3343:42:3" + { + "attributes": { + "parameters": [null] }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1381, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3402:4:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1373, - "id": 1382, - "nodeType": "Return", - "src": "3395:11:3" - } - ] - }, - "documentation": { - "id": 1364, - "nodeType": "StructuredDocumentation", - "src": "3052:192:3", - "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`." - }, - "functionSelector": "a9059cbb", - "id": 1384, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 1370, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "3309:8:3" - }, - "parameters": { - "id": 1369, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1366, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1384, - "src": "3267:17:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1365, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3267:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1368, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1384, - "src": "3286:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1367, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3286:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3266:35:3" - }, - "returnParameters": { - "id": 1373, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1372, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1384, - "src": "3327:4:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1371, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3327:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3326:6:3" - }, - "scope": 1728, - "src": "3249:164:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "baseFunctions": [1984], - "body": { - "id": 1401, - "nodeType": "Block", - "src": "3561:51:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1395, - "name": "_allowances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "3578:11:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 1397, - "indexExpression": { - "argumentTypes": null, - "id": 1396, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1387, - "src": "3590:5:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3578:18:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 1399, - "indexExpression": { - "argumentTypes": null, - "id": 1398, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1389, - "src": "3597:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3578:27:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1394, - "id": 1400, - "nodeType": "Return", - "src": "3571:34:3" - } - ] - }, - "documentation": { - "id": 1385, - "nodeType": "StructuredDocumentation", - "src": "3419:47:3", - "text": " @dev See {IERC20-allowance}." - }, - "functionSelector": "dd62ed3e", - "id": 1402, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 1391, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "3534:8:3" - }, - "parameters": { - "id": 1390, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1387, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1402, - "src": "3490:13:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1386, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3490:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1389, - "mutability": "mutable", - "name": "spender", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1402, - "src": "3505:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1388, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3505:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3489:32:3" - }, - "returnParameters": { - "id": 1394, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1393, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1402, - "src": "3552:7:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1392, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3552:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3551:9:3" - }, - "scope": 1728, - "src": "3471:141:3", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "baseFunctions": [1994], - "body": { - "id": 1422, - "nodeType": "Block", - "src": "3831:77:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ + "children": [], + "id": 1457, + "name": "ParameterList", + "src": "555:0:2" + }, + { + "children": [ + { + "children": [ { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1414, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "3850:10:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false }, - "id": 1415, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3850:12:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 1416, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1405, - "src": "3864:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1417, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1407, - "src": "3873:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1413, - "name": "_approve", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "3841:8:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 1418, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3841:39:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1419, - "nodeType": "ExpressionStatement", - "src": "3841:39:3" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1420, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3897:4:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1412, - "id": 1421, - "nodeType": "Return", - "src": "3890:11:3" - } - ] - }, - "documentation": { - "id": 1403, - "nodeType": "StructuredDocumentation", - "src": "3618:127:3", - "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address." - }, - "functionSelector": "095ea7b3", - "id": 1423, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "approve", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 1409, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "3807:8:3" - }, - "parameters": { - "id": 1408, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1405, - "mutability": "mutable", - "name": "spender", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1423, - "src": "3767:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1404, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3767:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1407, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1423, - "src": "3784:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1406, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3784:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3766:33:3" - }, - "returnParameters": { - "id": 1412, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1411, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1423, - "src": "3825:4:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1410, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3825:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3824:6:3" - }, - "scope": 1728, - "src": "3750:158:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "baseFunctions": [2006], - "body": { - "id": 1460, - "nodeType": "Block", - "src": "4472:205:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1437, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1426, - "src": "4492:6:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1438, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1428, - "src": "4500:9:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1439, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1430, - "src": "4511:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1436, - "name": "_transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1578, - "src": "4482:9:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 1440, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4482:36:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1441, - "nodeType": "ExpressionStatement", - "src": "4482:36:3" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1443, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1426, - "src": "4537:6:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1444, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "4545:10:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 1445, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4545:12:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "arguments": [ + "children": [ { - "argumentTypes": null, - "id": 1453, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1430, - "src": "4597:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc", + "typeString": "literal_string \"already initialized\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1458, + "name": "Identifier", + "src": "565:7:2" }, { - "argumentTypes": null, - "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", - "id": 1454, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4605:42:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", - "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" }, - "value": "ERC20: transfer amount exceeds allowance" + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1447, + "type": "bool", + "value": "initialized" + }, + "id": 1459, + "name": "Identifier", + "src": "574:11:2" + } + ], + "id": 1460, + "name": "UnaryOperation", + "src": "573:12:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "616c726561647920696e697469616c697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"already initialized\"", + "value": "already initialized" + }, + "id": 1461, + "name": "Literal", + "src": "587:21:2" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", - "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" - } - ], - "expression": { - "argumentTypes": null, - "baseExpression": { + "id": 1462, + "name": "FunctionCall", + "src": "565:44:2" + } + ], + "id": 1463, + "name": "ExpressionStatement", + "src": "565:44:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint8" + }, + "children": [ + { + "attributes": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1446, - "name": "_allowances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "4559:11:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" + "overloadedDeclarations": [null], + "referencedDeclaration": 1443, + "type": "uint8", + "value": "assetChain" + }, + "id": 1464, + "name": "Identifier", + "src": "647:10:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1451, + "type": "uint8", + "value": "_assetChain" + }, + "id": 1465, + "name": "Identifier", + "src": "660:11:2" + } + ], + "id": 1466, + "name": "Assignment", + "src": "647:24:2" + } + ], + "id": 1467, + "name": "ExpressionStatement", + "src": "647:24:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1445, + "type": "bytes32", + "value": "assetAddress" + }, + "id": 1468, + "name": "Identifier", + "src": "681:12:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1453, + "type": "bytes32", + "value": "_assetAddress" + }, + "id": 1469, + "name": "Identifier", + "src": "696:13:2" + } + ], + "id": 1470, + "name": "Assignment", + "src": "681:28:2" + } + ], + "id": 1471, + "name": "ExpressionStatement", + "src": "681:28:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1449, + "type": "address", + "value": "bridge" + }, + "id": 1472, + "name": "Identifier", + "src": "719:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1473, + "name": "Identifier", + "src": "728:3:2" + } + ], + "id": 1474, + "name": "MemberAccess", + "src": "728:10:2" + } + ], + "id": 1475, + "name": "Assignment", + "src": "719:19:2" + } + ], + "id": 1476, + "name": "ExpressionStatement", + "src": "719:19:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1447, + "type": "bool", + "value": "initialized" + }, + "id": 1477, + "name": "Identifier", + "src": "748:11:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 1478, + "name": "Literal", + "src": "762:4:2" + } + ], + "id": 1479, + "name": "Assignment", + "src": "748:18:2" + } + ], + "id": 1480, + "name": "ExpressionStatement", + "src": "748:18:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "string storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1552, + "type": "string storage ref", + "value": "_symbol" + }, + "id": 1481, + "name": "Identifier", + "src": "777:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "575754", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"WWT\"", + "value": "WWT" + }, + "id": 1482, + "name": "Literal", + "src": "787:5:2" + } + ], + "id": 1483, + "name": "Assignment", + "src": "777:15:2" + } + ], + "id": 1484, + "name": "ExpressionStatement", + "src": "777:15:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1555, + "type": "uint8", + "value": "_decimals" + }, + "id": 1485, + "name": "Identifier", + "src": "802:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1455, + "type": "uint8", + "value": "decimals" + }, + "id": 1486, + "name": "Identifier", + "src": "814:8:2" + } + ], + "id": 1487, + "name": "Assignment", + "src": "802:20:2" + } + ], + "id": 1488, + "name": "ExpressionStatement", + "src": "802:20:2" + } + ], + "id": 1489, + "name": "Block", + "src": "555:274:2" + } + ], + "id": 1490, + "name": "FunctionDefinition", + "src": "470:359:2" + }, + { + "attributes": { + "documentation": null, + "functionSelector": "40c10f19", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "mint", + "overrides": null, + "scope": 2147, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "account", + "overrides": null, + "scope": 1511, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1491, + "name": "ElementaryTypeName", + "src": "849:7:2" + } + ], + "id": 1492, + "name": "VariableDeclaration", + "src": "849:15:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 1511, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1493, + "name": "ElementaryTypeName", + "src": "866:7:2" + } + ], + "id": 1494, + "name": "VariableDeclaration", + "src": "866:14:2" + } + ], + "id": 1495, + "name": "ParameterList", + "src": "848:33:2" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1496, + "name": "ParameterList", + "src": "891:0:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e7702acf154d2f82cc8c1dd52813f94b0a08ea733aaf89d0cac26f6b55722c5a", + "typeString": "literal_string \"mint can only be called by the bridge\"" } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1497, + "name": "Identifier", + "src": "901:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 1448, - "indexExpression": { - "argumentTypes": null, - "id": 1447, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1426, - "src": "4571:6:3", - "typeDescriptions": { + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1498, + "name": "Identifier", + "src": "909:3:2" + } + ], + "id": 1499, + "name": "MemberAccess", + "src": "909:10:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1449, + "type": "address", + "value": "bridge" + }, + "id": 1500, + "name": "Identifier", + "src": "923:6:2" + } + ], + "id": 1501, + "name": "BinaryOperation", + "src": "909:20:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "6d696e742063616e206f6e6c792062652063616c6c65642062792074686520627269646765", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"mint can only be called by the bridge\"", + "value": "mint can only be called by the bridge" + }, + "id": 1502, + "name": "Literal", + "src": "931:39:2" + } + ], + "id": 1503, + "name": "FunctionCall", + "src": "901:70:2" + } + ], + "id": 1504, + "name": "ExpressionStatement", + "src": "901:70:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { "typeIdentifier": "t_address", "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4559:19:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 1451, - "indexExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1449, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "4579:10:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 1450, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4579:12:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4559:33:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1452, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 1825, - "src": "4559:37:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" - } - }, - "id": 1455, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4559:89:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1442, - "name": "_approve", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "4528:8:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 1456, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4528:121:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1457, - "nodeType": "ExpressionStatement", - "src": "4528:121:3" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1458, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4666:4:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1435, - "id": 1459, - "nodeType": "Return", - "src": "4659:11:3" - } - ] - }, - "documentation": { - "id": 1424, - "nodeType": "StructuredDocumentation", - "src": "3914:449:3", - "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20};\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`." - }, - "functionSelector": "23b872dd", - "id": 1461, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 1432, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "4448:8:3" - }, - "parameters": { - "id": 1431, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1426, - "mutability": "mutable", - "name": "sender", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1461, - "src": "4390:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1425, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4390:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1428, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1461, - "src": "4406:17:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1427, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4406:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1430, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1461, - "src": "4425:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1429, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4425:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4389:51:3" - }, - "returnParameters": { - "id": 1435, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1434, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1461, - "src": "4466:4:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1433, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4466:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4465:6:3" - }, - "scope": 1728, - "src": "4368:309:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1488, - "nodeType": "Block", - "src": "5158:121:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1472, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "5177:10:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 1473, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5177:12:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 1474, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1464, - "src": "5191:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1482, - "name": "addedValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1466, - "src": "5239:10:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1475, - "name": "_allowances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "5200:11:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 1478, - "indexExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1476, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "5212:10:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } }, - "id": 1477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5212:12:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5200:25:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2043, + "type": "function (address,uint256)", + "value": "_mint" }, - "id": 1480, - "indexExpression": { - "argumentTypes": null, - "id": 1479, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1464, - "src": "5226:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5200:34:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1481, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 1780, - "src": "5200:38:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 1483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5200:50:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1471, - "name": "_approve", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "5168:8:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 1484, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5168:83:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1485, - "nodeType": "ExpressionStatement", - "src": "5168:83:3" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1486, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5268:4:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1470, - "id": 1487, - "nodeType": "Return", - "src": "5261:11:3" - } - ] - }, - "documentation": { - "id": 1462, - "nodeType": "StructuredDocumentation", - "src": "4683:384:3", - "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." - }, - "functionSelector": "39509351", - "id": 1489, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "increaseAllowance", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1467, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1464, - "mutability": "mutable", - "name": "spender", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1489, - "src": "5099:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1463, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5099:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1466, - "mutability": "mutable", - "name": "addedValue", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1489, - "src": "5116:18:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1465, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5116:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5098:37:3" - }, - "returnParameters": { - "id": 1470, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1469, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1489, - "src": "5152:4:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1468, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "5152:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5151:6:3" - }, - "scope": 1728, - "src": "5072:207:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1517, - "nodeType": "Block", - "src": "5857:167:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1500, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "5876:10:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 1501, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5876:12:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 1502, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1492, - "src": "5890:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1510, - "name": "subtractedValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1494, - "src": "5938:15:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "id": 1505, + "name": "Identifier", + "src": "982:5:2" }, { - "argumentTypes": null, - "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", - "id": 1511, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5955:39:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", - "typeString": "literal_string \"ERC20: decreased allowance below zero\"" - }, - "value": "ERC20: decreased allowance below zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", - "typeString": "literal_string \"ERC20: decreased allowance below zero\"" - } - ], - "expression": { - "argumentTypes": null, - "baseExpression": { + "attributes": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1503, - "name": "_allowances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "5899:11:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 1506, - "indexExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1504, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1739, - "src": "5911:10:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 1505, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5911:12:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5899:25:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 1508, - "indexExpression": { - "argumentTypes": null, - "id": 1507, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], + "overloadedDeclarations": [null], "referencedDeclaration": 1492, - "src": "5925:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "type": "address", + "value": "account" }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5899:34:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "id": 1506, + "name": "Identifier", + "src": "988:7:2" }, - "id": 1509, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 1825, - "src": "5899:38:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1494, + "type": "uint256", + "value": "amount" + }, + "id": 1507, + "name": "Identifier", + "src": "997:6:2" } + ], + "id": 1508, + "name": "FunctionCall", + "src": "982:22:2" + } + ], + "id": 1509, + "name": "ExpressionStatement", + "src": "982:22:2" + } + ], + "id": 1510, + "name": "Block", + "src": "891:120:2" + } + ], + "id": 1511, + "name": "FunctionDefinition", + "src": "835:176:2" + }, + { + "attributes": { + "documentation": null, + "functionSelector": "9dc29fac", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "burn", + "overrides": null, + "scope": 2147, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "account", + "overrides": null, + "scope": 1532, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" }, "id": 1512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5899:96:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "name": "ElementaryTypeName", + "src": "1031:7:2" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1499, - "name": "_approve", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "5867:8:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, "id": 1513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5867:129:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "name": "VariableDeclaration", + "src": "1031:15:2" }, - "id": 1514, - "nodeType": "ExpressionStatement", - "src": "5867:129:3" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1515, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6013:4:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 1532, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" }, - "value": "true" - }, - "functionReturnParameters": 1498, - "id": 1516, - "nodeType": "Return", - "src": "6006:11:3" - } - ] - }, - "documentation": { - "id": 1490, - "nodeType": "StructuredDocumentation", - "src": "5285:476:3", - "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." - }, - "functionSelector": "a457c2d7", - "id": 1518, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "decreaseAllowance", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1495, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1492, - "mutability": "mutable", - "name": "spender", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1518, - "src": "5793:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1491, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5793:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1494, - "mutability": "mutable", - "name": "subtractedValue", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1518, - "src": "5810:23:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1493, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5810:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5792:42:3" - }, - "returnParameters": { - "id": 1498, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1497, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1518, - "src": "5851:4:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1496, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "5851:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5850:6:3" - }, - "scope": 1728, - "src": "5766:258:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1577, - "nodeType": "Block", - "src": "6577:385:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ + "children": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + "attributes": { + "name": "uint256", + "type": "uint256" }, - "id": 1534, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "id": 1514, + "name": "ElementaryTypeName", + "src": "1048:7:2" + } + ], + "id": 1515, + "name": "VariableDeclaration", + "src": "1048:14:2" + } + ], + "id": 1516, + "name": "ParameterList", + "src": "1030:33:2" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1517, + "name": "ParameterList", + "src": "1073:0:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { "argumentTypes": null, - "id": 1529, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1521, - "src": "6595:6:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c31242aa9df4d29364b074986b1202ec8729deca727157a31be5e2473387893b", + "typeString": "literal_string \"burn can only be called by the bridge\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1518, + "name": "Identifier", + "src": "1083:7:2" + }, + { + "attributes": { "argumentTypes": null, - "hexValue": "30", - "id": 1532, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -15, + "type": "msg", + "value": "msg" + }, + "id": 1519, + "name": "Identifier", + "src": "1091:3:2" + } + ], + "id": 1520, + "name": "MemberAccess", + "src": "1091:10:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1449, + "type": "address", + "value": "bridge" + }, + "id": 1521, + "name": "Identifier", + "src": "1105:6:2" + } + ], + "id": 1522, + "name": "BinaryOperation", + "src": "1091:20:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "6275726e2063616e206f6e6c792062652063616c6c65642062792074686520627269646765", "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", "lValueRequested": false, - "nodeType": "Literal", - "src": "6613:1:3", "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1531, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6605:7:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + "token": "string", + "type": "literal_string \"burn can only be called by the bridge\"", + "value": "burn can only be called by the bridge" }, - "typeName": { - "id": 1530, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6605:7:3", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1533, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6605:10:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + "id": 1523, + "name": "Literal", + "src": "1113:39:2" } - }, - "src": "6595:20:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", - "id": 1535, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6617:39:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", - "typeString": "literal_string \"ERC20: transfer from the zero address\"" - }, - "value": "ERC20: transfer from the zero address" + ], + "id": 1524, + "name": "FunctionCall", + "src": "1083:70:2" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", - "typeString": "literal_string \"ERC20: transfer from the zero address\"" - } - ], - "id": 1528, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "6587:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1536, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6587:70:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "id": 1525, + "name": "ExpressionStatement", + "src": "1083:70:2" }, - "id": 1537, - "nodeType": "ExpressionStatement", - "src": "6587:70:3" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ + { + "children": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2090, + "type": "function (address,uint256)", + "value": "_burn" + }, + "id": 1526, + "name": "Identifier", + "src": "1164:5:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1513, + "type": "address", + "value": "account" + }, + "id": 1527, + "name": "Identifier", + "src": "1170:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1515, + "type": "uint256", + "value": "amount" + }, + "id": 1528, + "name": "Identifier", + "src": "1179:6:2" + } + ], + "id": 1529, + "name": "FunctionCall", + "src": "1164:22:2" + } + ], + "id": 1530, + "name": "ExpressionStatement", + "src": "1164:22:2" + } + ], + "id": 1531, + "name": "Block", + "src": "1073:120:2" + } + ], + "id": 1532, + "name": "FunctionDefinition", + "src": "1017:176:2" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeMath", + "referencedDeclaration": 2505, + "type": "library SafeMath" + }, + "id": 1533, + "name": "UserDefinedTypeName", + "src": "1349:8:2" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1534, + "name": "ElementaryTypeName", + "src": "1362:7:2" + } + ], + "id": 1535, + "name": "UsingForDirective", + "src": "1343:27:2" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Address", + "referencedDeclaration": 3595, + "type": "library Address" + }, + "id": 1536, + "name": "UserDefinedTypeName", + "src": "1381:7:2" + }, + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1537, + "name": "ElementaryTypeName", + "src": "1393:7:2" + } + ], + "id": 1538, + "name": "UsingForDirective", + "src": "1375:26:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_balances", + "overrides": null, + "scope": 2147, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => uint256)", + "value": null, + "visibility": "private" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 1539, + "name": "ElementaryTypeName", + "src": "1415:7:2" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1540, + "name": "ElementaryTypeName", + "src": "1426:7:2" + } + ], + "id": 1541, + "name": "Mapping", + "src": "1407:27:2" + } + ], + "id": 1542, + "name": "VariableDeclaration", + "src": "1407:45:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_allowances", + "overrides": null, + "scope": 2147, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => mapping(address => uint256))", + "value": null, + "visibility": "private" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => mapping(address => uint256))" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 1543, + "name": "ElementaryTypeName", + "src": "1467:7:2" + }, + { + "attributes": { + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" }, "id": 1544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1539, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1523, - "src": "6675:9:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "name": "ElementaryTypeName", + "src": "1486:7:2" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { + "id": 1545, + "name": "ElementaryTypeName", + "src": "1497:7:2" + } + ], + "id": 1546, + "name": "Mapping", + "src": "1478:27:2" + } + ], + "id": 1547, + "name": "Mapping", + "src": "1459:47:2" + } + ], + "id": 1548, + "name": "VariableDeclaration", + "src": "1459:67:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_totalSupply", + "overrides": null, + "scope": 2147, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "private" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1549, + "name": "ElementaryTypeName", + "src": "1533:7:2" + } + ], + "id": 1550, + "name": "VariableDeclaration", + "src": "1533:28:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_symbol", + "overrides": null, + "scope": 2147, + "stateVariable": true, + "storageLocation": "default", + "type": "string", + "value": null, + "visibility": "private" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 1551, + "name": "ElementaryTypeName", + "src": "1568:6:2" + } + ], + "id": 1552, + "name": "VariableDeclaration", + "src": "1568:22:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_decimals", + "overrides": null, + "scope": 2147, + "stateVariable": true, + "storageLocation": "default", + "type": "uint8", + "visibility": "private" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1553, + "name": "ElementaryTypeName", + "src": "1596:5:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3138", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 18", + "value": "18" + }, + "id": 1554, + "name": "Literal", + "src": "1622:2:2" + } + ], + "id": 1555, + "name": "VariableDeclaration", + "src": "1596:28:2" + }, + { + "attributes": { + "functionSelector": "06fdde03", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "name", + "overrides": null, + "scope": 2147, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the name of the token." + }, + "id": 1556, + "name": "StructuredDocumentation", + "src": "1631:54:2" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1557, + "name": "ParameterList", + "src": "1703:2:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 1576, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 1558, + "name": "ElementaryTypeName", + "src": "1727:6:2" + } + ], + "id": 1559, + "name": "VariableDeclaration", + "src": "1727:13:2" + } + ], + "id": 1560, + "name": "ParameterList", + "src": "1726:15:2" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 1560 + }, + "children": [ + { + "attributes": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 1542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "string memory", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", "lValueRequested": false, - "nodeType": "Literal", - "src": "6696:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ + "type": "type(string storage pointer)" + }, + "children": [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "attributes": { + "name": "string", + "type": null + }, + "id": 1561, + "name": "ElementaryTypeName", + "src": "1759:6:2" } ], - "id": 1541, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6688:7:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + "id": 1562, + "name": "ElementaryTypeNameExpression", + "src": "1759:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false }, - "typeName": { - "id": 1540, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6688:7:3", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_5cf7e3c6b428de30b95e99bd5727c04cd18c12b66cf3176e2f95b4ceb77530a8", + "typeString": "literal_string \"Wormhole Wrapped - \"" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561", + "typeString": "literal_string \"-\"" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "encodePacked", + "referencedDeclaration": null, + "type": "function () pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": -1, + "type": "abi", + "value": "abi" + }, + "id": 1563, + "name": "Identifier", + "src": "1766:3:2" + } + ], + "id": 1564, + "name": "MemberAccess", + "src": "1766:16:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "576f726d686f6c652057726170706564202d20", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Wormhole Wrapped - \"", + "value": "Wormhole Wrapped - " + }, + "id": 1565, + "name": "Literal", + "src": "1783:21:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "string memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1654, + "type": "function (uint256) pure returns (string memory)", + "value": "uintToString" + }, + "id": 1566, + "name": "Identifier", + "src": "1806:12:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1443, + "type": "uint8", + "value": "assetChain" + }, + "id": 1567, + "name": "Identifier", + "src": "1819:10:2" + } + ], + "id": 1568, + "name": "FunctionCall", + "src": "1806:24:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "2d", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"-\"", + "value": "-" + }, + "id": 1569, + "name": "Literal", + "src": "1832:3:2" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "string memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 1740, + "type": "function () view returns (string memory)", + "value": "assetAddressString" + }, + "id": 1570, + "name": "Identifier", + "src": "1837:18:2" + } + ], + "id": 1571, + "name": "FunctionCall", + "src": "1837:20:2" } - } - }, - "id": 1543, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6688:10:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "6675:23:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", - "id": 1545, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6700:37:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", - "typeString": "literal_string \"ERC20: transfer to the zero address\"" - }, - "value": "ERC20: transfer to the zero address" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", - "typeString": "literal_string \"ERC20: transfer to the zero address\"" - } - ], - "id": 1538, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "6667:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1546, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6667:71:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1547, - "nodeType": "ExpressionStatement", - "src": "6667:71:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1558, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1548, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "6749:9:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 1550, - "indexExpression": { - "argumentTypes": null, - "id": 1549, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1521, - "src": "6759:6:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6749:17:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1555, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1525, - "src": "6791:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", - "id": 1556, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6799:40:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", - "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" - }, - "value": "ERC20: transfer amount exceeds balance" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", - "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + ], + "id": 1572, + "name": "FunctionCall", + "src": "1766:92:2" } ], - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1551, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "6769:9:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 1553, - "indexExpression": { - "argumentTypes": null, - "id": 1552, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1521, - "src": "6779:6:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6769:17:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 1825, - "src": "6769:21:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" - } - }, - "id": 1557, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6769:71:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6749:91:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1559, - "nodeType": "ExpressionStatement", - "src": "6749:91:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1569, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1560, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "6850:9:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 1562, - "indexExpression": { - "argumentTypes": null, - "id": 1561, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1523, - "src": "6860:9:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6850:20:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1567, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1525, - "src": "6898:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1563, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "6873:9:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 1565, - "indexExpression": { - "argumentTypes": null, - "id": 1564, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1523, - "src": "6883:9:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6873:20:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1566, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 1780, - "src": "6873:24:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 1568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6873:32:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6850:55:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1570, - "nodeType": "ExpressionStatement", - "src": "6850:55:3" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1572, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1521, - "src": "6929:6:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, "id": 1573, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1523, - "src": "6937:9:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1574, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1525, - "src": "6948:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "name": "FunctionCall", + "src": "1759:100:2" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1571, - "name": "Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2015, - "src": "6920:8:3", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 1575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6920:35:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1576, - "nodeType": "EmitStatement", - "src": "6915:40:3" - } - ] - }, - "documentation": { - "id": 1519, - "nodeType": "StructuredDocumentation", - "src": "6030:463:3", - "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`." - }, - "id": 1578, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_transfer", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1526, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1521, - "mutability": "mutable", - "name": "sender", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1578, - "src": "6517:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1520, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6517:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1523, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1578, - "src": "6533:17:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1522, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6533:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1525, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1578, - "src": "6552:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1524, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6552:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6516:51:3" - }, - "returnParameters": { - "id": 1527, - "nodeType": "ParameterList", - "parameters": [], - "src": "6577:0:3" - }, - "scope": 1728, - "src": "6498:464:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" + "id": 1574, + "name": "Return", + "src": "1752:107:2" + } + ], + "id": 1575, + "name": "Block", + "src": "1742:124:2" + } + ], + "id": 1576, + "name": "FunctionDefinition", + "src": "1690:176:2" }, { - "body": { - "id": 1623, - "nodeType": "Block", - "src": "7289:245:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "uintToString", + "overrides": null, + "scope": 2147, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_i", + "overrides": null, + "scope": 1654, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + "attributes": { + "name": "uint", + "type": "uint256" + }, + "id": 1577, + "name": "ElementaryTypeName", + "src": "1944:4:2" + } + ], + "id": 1578, + "name": "VariableDeclaration", + "src": "1944:7:2" + } + ], + "id": 1579, + "name": "ParameterList", + "src": "1943:9:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "_uintAsString", + "overrides": null, + "scope": 1654, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 1580, + "name": "ElementaryTypeName", + "src": "1976:6:2" + } + ], + "id": 1581, + "name": "VariableDeclaration", + "src": "1976:27:2" + } + ], + "id": 1582, + "name": "ParameterList", + "src": "1975:29:2" + }, + { + "children": [ + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1578, + "type": "uint256", + "value": "_i" + }, + "id": 1583, + "name": "Identifier", + "src": "2019:2:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 1584, + "name": "Literal", + "src": "2025:1:2" + } + ], + "id": 1585, + "name": "BinaryOperation", + "src": "2019:7:2" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 1582 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"0\"", + "value": "0" + }, + "id": 1586, + "name": "Literal", + "src": "2049:3:2" + } + ], + "id": 1587, + "name": "Return", + "src": "2042:10:2" + } + ], + "id": 1588, + "name": "Block", + "src": "2028:35:2" + } + ], + "id": 1589, + "name": "IfStatement", + "src": "2015:48:2" + }, + { + "attributes": { + "assignments": [1591] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "j", + "overrides": null, + "scope": 1653, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint", + "type": "uint256" + }, + "id": 1590, + "name": "ElementaryTypeName", + "src": "2072:4:2" + } + ], + "id": 1591, + "name": "VariableDeclaration", + "src": "2072:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1578, + "type": "uint256", + "value": "_i" }, "id": 1592, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1587, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1581, - "src": "7307:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "name": "Identifier", + "src": "2081:2:2" + } + ], + "id": 1593, + "name": "VariableDeclarationStatement", + "src": "2072:11:2" + }, + { + "attributes": { + "assignments": [1595], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "len", + "overrides": null, + "scope": 1653, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { + "children": [ + { + "attributes": { + "name": "uint", + "type": "uint256" + }, + "id": 1594, + "name": "ElementaryTypeName", + "src": "2093:4:2" + } + ], + "id": 1595, + "name": "VariableDeclaration", + "src": "2093:8:2" + } + ], + "id": 1596, + "name": "VariableDeclarationStatement", + "src": "2093:8:2" + }, + { + "children": [ + { + "attributes": { "argumentTypes": null, - "arguments": [ - { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { "argumentTypes": null, - "hexValue": "30", - "id": 1590, + "overloadedDeclarations": [null], + "referencedDeclaration": 1591, + "type": "uint256", + "value": "j" + }, + "id": 1597, + "name": "Identifier", + "src": "2118:1:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", "lValueRequested": false, - "nodeType": "Literal", - "src": "7326:1:3", "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, + "token": "number", + "type": "int_const 0", "value": "0" - } - ], - "expression": { - "argumentTypes": [ + }, + "id": 1598, + "name": "Literal", + "src": "2123:1:2" + } + ], + "id": 1599, + "name": "BinaryOperation", + "src": "2118:6:2" + }, + { + "children": [ + { + "children": [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "++", + "prefix": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1595, + "type": "uint256", + "value": "len" + }, + "id": 1600, + "name": "Identifier", + "src": "2140:3:2" + } + ], + "id": 1601, + "name": "UnaryOperation", + "src": "2140:5:2" } ], - "id": 1589, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7318:7:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1588, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7318:7:3", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } + "id": 1602, + "name": "ExpressionStatement", + "src": "2140:5:2" }, - "id": 1591, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7318:10:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1591, + "type": "uint256", + "value": "j" + }, + "id": 1603, + "name": "Identifier", + "src": "2159:1:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1604, + "name": "Literal", + "src": "2164:2:2" + } + ], + "id": 1605, + "name": "Assignment", + "src": "2159:7:2" + } + ], + "id": 1606, + "name": "ExpressionStatement", + "src": "2159:7:2" } - }, - "src": "7307:21:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", - "id": 1593, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7330:33:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", - "typeString": "literal_string \"ERC20: mint to the zero address\"" - }, - "value": "ERC20: mint to the zero address" + ], + "id": 1607, + "name": "Block", + "src": "2126:51:2" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", - "typeString": "literal_string \"ERC20: mint to the zero address\"" - } - ], - "id": 1586, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "7299:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1594, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7299:65:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "id": 1608, + "name": "WhileStatement", + "src": "2111:66:2" }, - "id": 1595, - "nodeType": "ExpressionStatement", - "src": "7299:65:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1601, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1596, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "7375:12:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + { + "attributes": { + "assignments": [1610] }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1599, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1583, - "src": "7407:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "bstr", + "overrides": null, + "scope": 1653, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 1609, + "name": "ElementaryTypeName", + "src": "2186:5:2" } ], - "expression": { + "id": 1610, + "name": "VariableDeclaration", + "src": "2186:17:2" + }, + { + "attributes": { "argumentTypes": null, - "id": 1597, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "7390:12:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false }, - "id": 1598, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 1780, - "src": "7390:16:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 1600, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7390:24:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7375:39:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1602, - "nodeType": "ExpressionStatement", - "src": "7375:39:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1612, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1603, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "7424:9:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 1605, - "indexExpression": { - "argumentTypes": null, - "id": 1604, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1581, - "src": "7434:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7424:18:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1610, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1583, - "src": "7468:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ + "children": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1606, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "7445:9:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "function (uint256) pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 1611, + "name": "ElementaryTypeName", + "src": "2210:5:2" + } + ], + "id": 1612, + "name": "NewExpression", + "src": "2206:9:2" }, - "id": 1608, - "indexExpression": { - "argumentTypes": null, - "id": 1607, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1581, - "src": "7455:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1595, + "type": "uint256", + "value": "len" + }, + "id": 1613, + "name": "Identifier", + "src": "2216:3:2" + } + ], + "id": 1614, + "name": "FunctionCall", + "src": "2206:14:2" + } + ], + "id": 1615, + "name": "VariableDeclarationStatement", + "src": "2186:34:2" + }, + { + "attributes": { + "assignments": [1617] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "k", + "overrides": null, + "scope": 1653, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint", + "type": "uint256" + }, + "id": 1616, + "name": "ElementaryTypeName", + "src": "2230:4:2" + } + ], + "id": 1617, + "name": "VariableDeclaration", + "src": "2230:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7445:18:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "operator": "-", + "type": "uint256" }, - "id": 1609, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 1780, - "src": "7445:22:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 1611, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7445:30:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7424:51:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1613, - "nodeType": "ExpressionStatement", - "src": "7424:51:3" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ + "children": [ { - "argumentTypes": null, - "hexValue": "30", - "id": 1617, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7507:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1595, + "type": "uint256", + "value": "len" }, - "value": "0" + "id": 1618, + "name": "Identifier", + "src": "2239:3:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 1619, + "name": "Literal", + "src": "2245:1:2" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1616, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7499:7:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1615, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7499:7:3", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1618, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7499:10:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 1619, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1581, - "src": "7511:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, "id": 1620, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1583, - "src": "7520:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "name": "BinaryOperation", + "src": "2239:7:2" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1614, - "name": "Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2015, - "src": "7490:8:3", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, "id": 1621, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7490:37:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "name": "VariableDeclarationStatement", + "src": "2230:16:2" }, - "id": 1622, - "nodeType": "EmitStatement", - "src": "7485:42:3" - } - ] - }, - "documentation": { - "id": 1579, - "nodeType": "StructuredDocumentation", - "src": "6968:259:3", - "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements\n - `to` cannot be the zero address." - }, - "id": 1624, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_mint", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1584, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1581, - "mutability": "mutable", - "name": "account", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1624, - "src": "7247:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1578, + "type": "uint256", + "value": "_i" + }, + "id": 1622, + "name": "Identifier", + "src": "2263:2:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 1623, + "name": "Literal", + "src": "2269:1:2" + } + ], + "id": 1624, + "name": "BinaryOperation", + "src": "2263:7:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "bytes1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1610, + "type": "bytes memory", + "value": "bstr" + }, + "id": 1625, + "name": "Identifier", + "src": "2286:4:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "--", + "prefix": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1617, + "type": "uint256", + "value": "k" + }, + "id": 1626, + "name": "Identifier", + "src": "2291:1:2" + } + ], + "id": 1627, + "name": "UnaryOperation", + "src": "2291:3:2" + } + ], + "id": 1628, + "name": "IndexAccess", + "src": "2286:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes1", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bytes1)" + }, + "children": [ + { + "attributes": { + "name": "byte", + "type": null + }, + "id": 1629, + "name": "ElementaryTypeName", + "src": "2298:4:2" + } + ], + "id": 1630, + "name": "ElementaryTypeNameExpression", + "src": "2298:4:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint8)" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": null + }, + "id": 1631, + "name": "ElementaryTypeName", + "src": "2303:5:2" + } + ], + "id": 1632, + "name": "ElementaryTypeNameExpression", + "src": "2303:5:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3438", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 48", + "value": "48" + }, + "id": 1633, + "name": "Literal", + "src": "2309:2:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "%", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1578, + "type": "uint256", + "value": "_i" + }, + "id": 1634, + "name": "Identifier", + "src": "2314:2:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1635, + "name": "Literal", + "src": "2319:2:2" + } + ], + "id": 1636, + "name": "BinaryOperation", + "src": "2314:7:2" + } + ], + "id": 1637, + "name": "BinaryOperation", + "src": "2309:12:2" + } + ], + "id": 1638, + "name": "FunctionCall", + "src": "2303:19:2" + } + ], + "id": 1639, + "name": "FunctionCall", + "src": "2298:25:2" + } + ], + "id": 1640, + "name": "Assignment", + "src": "2286:37:2" + } + ], + "id": 1641, + "name": "ExpressionStatement", + "src": "2286:37:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1578, + "type": "uint256", + "value": "_i" + }, + "id": 1642, + "name": "Identifier", + "src": "2337:2:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 1643, + "name": "Literal", + "src": "2343:2:2" + } + ], + "id": 1644, + "name": "Assignment", + "src": "2337:8:2" + } + ], + "id": 1645, + "name": "ExpressionStatement", + "src": "2337:8:2" + } + ], + "id": 1646, + "name": "Block", + "src": "2272:84:2" + } + ], + "id": 1647, + "name": "WhileStatement", + "src": "2256:100:2" }, - "typeName": { - "id": 1580, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7247:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1583, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1624, - "src": "7264:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1582, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7264:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7246:33:3" - }, - "returnParameters": { - "id": 1585, - "nodeType": "ParameterList", - "parameters": [], - "src": "7289:0:3" - }, - "scope": 1728, - "src": "7232:302:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" + { + "attributes": { + "functionReturnParameters": 1582 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "string memory", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(string storage pointer)" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": null + }, + "id": 1648, + "name": "ElementaryTypeName", + "src": "2372:6:2" + } + ], + "id": 1649, + "name": "ElementaryTypeNameExpression", + "src": "2372:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1610, + "type": "bytes memory", + "value": "bstr" + }, + "id": 1650, + "name": "Identifier", + "src": "2379:4:2" + } + ], + "id": 1651, + "name": "FunctionCall", + "src": "2372:12:2" + } + ], + "id": 1652, + "name": "Return", + "src": "2365:19:2" + } + ], + "id": 1653, + "name": "Block", + "src": "2005:386:2" + } + ], + "id": 1654, + "name": "FunctionDefinition", + "src": "1922:469:2" }, { - "body": { - "id": 1670, - "nodeType": "Block", - "src": "7910:285:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1638, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1633, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "7928:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 1636, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7947:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1635, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7939:7:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1634, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7939:7:3", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1637, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7939:10:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "7928:21:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", - "id": 1639, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7951:35:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", - "typeString": "literal_string \"ERC20: burn from the zero address\"" - }, - "value": "ERC20: burn from the zero address" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", - "typeString": "literal_string \"ERC20: burn from the zero address\"" - } - ], - "id": 1632, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "7920:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1640, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7920:67:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1641, - "nodeType": "ExpressionStatement", - "src": "7920:67:3" + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "assetAddressString", + "overrides": null, + "scope": 2147, + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + "children": [ + { + "attributes": { + "parameters": [null] }, - { - "expression": { - "argumentTypes": null, - "id": 1652, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1642, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "7998:9:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 1644, - "indexExpression": { - "argumentTypes": null, - "id": 1643, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "8008:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7998:18:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "children": [], + "id": 1655, + "name": "ParameterList", + "src": "2474:2:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 1740, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1649, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1629, - "src": "8042:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", - "id": 1650, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8050:36:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", - "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" - }, - "value": "ERC20: burn amount exceeds balance" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", - "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" - } - ], - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1645, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "8019:9:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 1647, - "indexExpression": { - "argumentTypes": null, - "id": 1646, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "8029:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8019:18:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 1825, - "src": "8019:22:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" - } - }, - "id": 1651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8019:68:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7998:89:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1653, - "nodeType": "ExpressionStatement", - "src": "7998:89:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1659, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1654, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "8097:12:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1657, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1629, - "src": "8129:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1655, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "8112:12:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "children": [ + { + "attributes": { + "name": "string", + "type": "string" }, "id": 1656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 1797, - "src": "8112:16:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 1658, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8112:24:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "name": "ElementaryTypeName", + "src": "2499:6:2" } + ], + "id": 1657, + "name": "VariableDeclaration", + "src": "2499:13:2" + } + ], + "id": 1658, + "name": "ParameterList", + "src": "2498:15:2" + }, + { + "children": [ + { + "attributes": { + "assignments": [1660] }, - "src": "8097:39:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1660, - "nodeType": "ExpressionStatement", - "src": "8097:39:3" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ + "children": [ { - "argumentTypes": null, - "id": 1662, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "8160:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "alphabet", + "overrides": null, + "scope": 1739, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ { - "argumentTypes": null, - "hexValue": "30", - "id": 1665, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8177:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "attributes": { + "name": "bytes", + "type": "bytes" }, - "value": "0" + "id": 1659, + "name": "ElementaryTypeName", + "src": "2524:5:2" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1664, + "id": 1660, + "name": "VariableDeclaration", + "src": "2524:21:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30313233343536373839616263646566", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8169:7:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { + "subdenomination": null, + "token": "string", + "type": "literal_string \"0123456789abcdef\"", + "value": "0123456789abcdef" + }, + "id": 1661, + "name": "Literal", + "src": "2548:18:2" + } + ], + "id": 1662, + "name": "VariableDeclarationStatement", + "src": "2524:42:2" + }, + { + "attributes": { + "assignments": [1664] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "data", + "overrides": null, + "scope": 1739, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, "id": 1663, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8169:7:3", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } + "name": "ElementaryTypeName", + "src": "2576:7:2" } - }, - "id": 1666, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8169:10:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } + ], + "id": 1664, + "name": "VariableDeclaration", + "src": "2576:12:2" }, { - "argumentTypes": null, - "id": 1667, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1629, - "src": "8181:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1445, + "type": "bytes32", + "value": "assetAddress" + }, + "id": 1665, + "name": "Identifier", + "src": "2591:12:2" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1661, - "name": "Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2015, - "src": "8151:8:3", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } + "id": 1666, + "name": "VariableDeclarationStatement", + "src": "2576:27:2" + }, + { + "attributes": { + "assignments": [1668] }, - "id": 1668, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8151:37:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "str", + "overrides": null, + "scope": 1739, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 1667, + "name": "ElementaryTypeName", + "src": "2614:5:2" + } + ], + "id": 1668, + "name": "VariableDeclaration", + "src": "2614:16:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "function (uint256) pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 1669, + "name": "ElementaryTypeName", + "src": "2637:5:2" + } + ], + "id": 1670, + "name": "NewExpression", + "src": "2633:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "32", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 2", + "value": "2" + }, + "id": 1671, + "name": "Literal", + "src": "2643:1:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1664, + "type": "bytes32", + "value": "data" + }, + "id": 1672, + "name": "Identifier", + "src": "2647:4:2" + } + ], + "id": 1673, + "name": "MemberAccess", + "src": "2647:11:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "32", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 2", + "value": "2" + }, + "id": 1674, + "name": "Literal", + "src": "2661:1:2" + } + ], + "id": 1675, + "name": "BinaryOperation", + "src": "2647:15:2" + } + ], + "id": 1676, + "name": "BinaryOperation", + "src": "2643:19:2" + } + ], + "id": 1677, + "name": "FunctionCall", + "src": "2633:30:2" + } + ], + "id": 1678, + "name": "VariableDeclarationStatement", + "src": "2614:49:2" }, - "id": 1669, - "nodeType": "EmitStatement", - "src": "8146:42:3" - } - ] - }, - "documentation": { - "id": 1625, - "nodeType": "StructuredDocumentation", - "src": "7540:308:3", - "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." - }, - "id": 1671, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_burn", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1630, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1627, - "mutability": "mutable", - "name": "account", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1671, - "src": "7868:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + { + "children": [ + { + "attributes": { + "assignments": [1680] + }, + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "i", + "overrides": null, + "scope": 1733, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint", + "type": "uint256" + }, + "id": 1679, + "name": "ElementaryTypeName", + "src": "2678:4:2" + } + ], + "id": 1680, + "name": "VariableDeclaration", + "src": "2678:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 1681, + "name": "Literal", + "src": "2687:1:2" + } + ], + "id": 1682, + "name": "VariableDeclarationStatement", + "src": "2678:10:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1680, + "type": "uint256", + "value": "i" + }, + "id": 1683, + "name": "Identifier", + "src": "2690:1:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1664, + "type": "bytes32", + "value": "data" + }, + "id": 1684, + "name": "Identifier", + "src": "2694:4:2" + } + ], + "id": 1685, + "name": "MemberAccess", + "src": "2694:11:2" + } + ], + "id": 1686, + "name": "BinaryOperation", + "src": "2690:15:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "++", + "prefix": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1680, + "type": "uint256", + "value": "i" + }, + "id": 1687, + "name": "Identifier", + "src": "2707:1:2" + } + ], + "id": 1688, + "name": "UnaryOperation", + "src": "2707:3:2" + } + ], + "id": 1689, + "name": "ExpressionStatement", + "src": "2707:3:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "bytes1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1668, + "type": "bytes memory", + "value": "str" + }, + "id": 1690, + "name": "Identifier", + "src": "2726:3:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1680, + "type": "uint256", + "value": "i" + }, + "id": 1691, + "name": "Identifier", + "src": "2730:1:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "32", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 2", + "value": "2" + }, + "id": 1692, + "name": "Literal", + "src": "2734:1:2" + } + ], + "id": 1693, + "name": "BinaryOperation", + "src": "2730:5:2" + } + ], + "id": 1694, + "name": "IndexAccess", + "src": "2726:10:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bytes1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1660, + "type": "bytes memory", + "value": "alphabet" + }, + "id": 1695, + "name": "Identifier", + "src": "2739:8:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint", + "type": null + }, + "id": 1696, + "name": "ElementaryTypeName", + "src": "2748:4:2" + } + ], + "id": 1697, + "name": "ElementaryTypeNameExpression", + "src": "2748:4:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint8)" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": null + }, + "id": 1698, + "name": "ElementaryTypeName", + "src": "2753:5:2" + } + ], + "id": 1699, + "name": "ElementaryTypeNameExpression", + "src": "2753:5:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">>", + "type": "bytes1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "bytes1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1664, + "type": "bytes32", + "value": "data" + }, + "id": 1700, + "name": "Identifier", + "src": "2759:4:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1680, + "type": "uint256", + "value": "i" + }, + "id": 1701, + "name": "Identifier", + "src": "2764:1:2" + } + ], + "id": 1702, + "name": "IndexAccess", + "src": "2759:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "34", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 4", + "value": "4" + }, + "id": 1703, + "name": "Literal", + "src": "2770:1:2" + } + ], + "id": 1704, + "name": "BinaryOperation", + "src": "2759:12:2" + } + ], + "id": 1705, + "name": "FunctionCall", + "src": "2753:19:2" + } + ], + "id": 1706, + "name": "FunctionCall", + "src": "2748:25:2" + } + ], + "id": 1707, + "name": "IndexAccess", + "src": "2739:35:2" + } + ], + "id": 1708, + "name": "Assignment", + "src": "2726:48:2" + } + ], + "id": 1709, + "name": "ExpressionStatement", + "src": "2726:48:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "bytes1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1668, + "type": "bytes memory", + "value": "str" + }, + "id": 1710, + "name": "Identifier", + "src": "2788:3:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 1711, + "name": "Literal", + "src": "2792:1:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "*", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1680, + "type": "uint256", + "value": "i" + }, + "id": 1712, + "name": "Identifier", + "src": "2796:1:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "32", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 2", + "value": "2" + }, + "id": 1713, + "name": "Literal", + "src": "2800:1:2" + } + ], + "id": 1714, + "name": "BinaryOperation", + "src": "2796:5:2" + } + ], + "id": 1715, + "name": "BinaryOperation", + "src": "2792:9:2" + } + ], + "id": 1716, + "name": "IndexAccess", + "src": "2788:14:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bytes1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1660, + "type": "bytes memory", + "value": "alphabet" + }, + "id": 1717, + "name": "Identifier", + "src": "2805:8:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)" + }, + "children": [ + { + "attributes": { + "name": "uint", + "type": null + }, + "id": 1718, + "name": "ElementaryTypeName", + "src": "2814:4:2" + } + ], + "id": 1719, + "name": "ElementaryTypeNameExpression", + "src": "2814:4:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint8", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint8)" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": null + }, + "id": 1720, + "name": "ElementaryTypeName", + "src": "2819:5:2" + } + ], + "id": 1721, + "name": "ElementaryTypeNameExpression", + "src": "2819:5:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&", + "type": "bytes1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "bytes1" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1664, + "type": "bytes32", + "value": "data" + }, + "id": 1722, + "name": "Identifier", + "src": "2825:4:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 1680, + "type": "uint256", + "value": "i" + }, + "id": 1723, + "name": "Identifier", + "src": "2830:1:2" + } + ], + "id": 1724, + "name": "IndexAccess", + "src": "2825:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30783066", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 15", + "value": "0x0f" + }, + "id": 1725, + "name": "Literal", + "src": "2835:4:2" + } + ], + "id": 1726, + "name": "BinaryOperation", + "src": "2825:14:2" + } + ], + "id": 1727, + "name": "FunctionCall", + "src": "2819:21:2" + } + ], + "id": 1728, + "name": "FunctionCall", + "src": "2814:27:2" + } + ], + "id": 1729, + "name": "IndexAccess", + "src": "2805:37:2" + } + ], + "id": 1730, + "name": "Assignment", + "src": "2788:54:2" + } + ], + "id": 1731, + "name": "ExpressionStatement", + "src": "2788:54:2" + } + ], + "id": 1732, + "name": "Block", + "src": "2712:141:2" + } + ], + "id": 1733, + "name": "ForStatement", + "src": "2673:180:2" }, - "typeName": { - "id": 1626, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7868:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1629, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1671, - "src": "7885:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1628, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7885:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7867:33:3" - }, - "returnParameters": { - "id": 1631, - "nodeType": "ParameterList", - "parameters": [], - "src": "7910:0:3" - }, - "scope": 1728, - "src": "7853:342:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" + { + "attributes": { + "functionReturnParameters": 1658 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "string memory", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(string storage pointer)" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": null + }, + "id": 1734, + "name": "ElementaryTypeName", + "src": "2869:6:2" + } + ], + "id": 1735, + "name": "ElementaryTypeNameExpression", + "src": "2869:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1668, + "type": "bytes memory", + "value": "str" + }, + "id": 1736, + "name": "Identifier", + "src": "2876:3:2" + } + ], + "id": 1737, + "name": "FunctionCall", + "src": "2869:11:2" + } + ], + "id": 1738, + "name": "Return", + "src": "2862:18:2" + } + ], + "id": 1739, + "name": "Block", + "src": "2514:373:2" + } + ], + "id": 1740, + "name": "FunctionDefinition", + "src": "2447:440:2" }, { - "body": { - "id": 1715, - "nodeType": "Block", - "src": "8695:257:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ + "attributes": { + "functionSelector": "95d89b41", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "symbol", + "overrides": null, + "scope": 2147, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "id": 1741, + "name": "StructuredDocumentation", + "src": "2893:102:2" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1742, + "name": "ParameterList", + "src": "3015:2:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 1749, + "stateVariable": false, + "storageLocation": "memory", + "type": "string", + "value": null, + "visibility": "internal" + }, + "children": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + "attributes": { + "name": "string", + "type": "string" }, - "id": 1687, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1682, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1674, - "src": "8713:5:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 1685, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8730:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1684, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8722:7:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1683, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8722:7:3", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1686, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8722:10:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "8713:19:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", - "id": 1688, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8734:38:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", - "typeString": "literal_string \"ERC20: approve from the zero address\"" - }, - "value": "ERC20: approve from the zero address" + "id": 1743, + "name": "ElementaryTypeName", + "src": "3039:6:2" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", - "typeString": "literal_string \"ERC20: approve from the zero address\"" - } - ], - "id": 1681, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "8705:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } + "id": 1744, + "name": "VariableDeclaration", + "src": "3039:13:2" + } + ], + "id": 1745, + "name": "ParameterList", + "src": "3038:15:2" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 1745 }, - "id": 1689, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8705:68:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1690, - "nodeType": "ExpressionStatement", - "src": "8705:68:3" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ + "children": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1697, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "attributes": { "argumentTypes": null, - "id": 1692, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "8791:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "overloadedDeclarations": [null], + "referencedDeclaration": 1552, + "type": "string storage ref", + "value": "_symbol" }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 1695, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8810:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1694, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8802:7:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1693, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8802:7:3", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1696, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8802:10:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "8791:21:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", - "id": 1698, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8814:36:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", - "typeString": "literal_string \"ERC20: approve to the zero address\"" - }, - "value": "ERC20: approve to the zero address" + "id": 1746, + "name": "Identifier", + "src": "3071:7:2" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", - "typeString": "literal_string \"ERC20: approve to the zero address\"" - } - ], - "id": 1691, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "8783:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1699, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8783:68:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1700, - "nodeType": "ExpressionStatement", - "src": "8783:68:3" + "id": 1747, + "name": "Return", + "src": "3064:14:2" + } + ], + "id": 1748, + "name": "Block", + "src": "3054:31:2" + } + ], + "id": 1749, + "name": "FunctionDefinition", + "src": "3000:85:2" + }, + { + "attributes": { + "functionSelector": "313ce567", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "decimals", + "overrides": null, + "scope": 2147, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." }, - { - "expression": { - "argumentTypes": null, - "id": 1707, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1701, - "name": "_allowances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "8862:11:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 1704, - "indexExpression": { - "argumentTypes": null, - "id": 1702, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1674, - "src": "8874:5:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8862:18:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 1705, - "indexExpression": { - "argumentTypes": null, - "id": 1703, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "8881:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8862:27:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "id": 1750, + "name": "StructuredDocumentation", + "src": "3091:612:2" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1751, + "name": "ParameterList", + "src": "3725:2:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 1758, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1706, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 1752, + "name": "ElementaryTypeName", + "src": "3749:5:2" + } + ], + "id": 1753, + "name": "VariableDeclaration", + "src": "3749:5:2" + } + ], + "id": 1754, + "name": "ParameterList", + "src": "3748:7:2" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 1754 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1555, + "type": "uint8", + "value": "_decimals" + }, + "id": 1755, + "name": "Identifier", + "src": "3773:9:2" + } + ], + "id": 1756, + "name": "Return", + "src": "3766:16:2" + } + ], + "id": 1757, + "name": "Block", + "src": "3756:33:2" + } + ], + "id": 1758, + "name": "FunctionDefinition", + "src": "3708:81:2" + }, + { + "attributes": { + "baseFunctions": [3017], + "functionSelector": "18160ddd", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "totalSupply", + "scope": 2147, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev See {IERC20-totalSupply}." + }, + "id": 1759, + "name": "StructuredDocumentation", + "src": "3795:49:2" + }, + { + "attributes": { + "overrides": [null] + }, + "id": 1761, + "name": "OverrideSpecifier", + "src": "3884:8:2" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1760, + "name": "ParameterList", + "src": "3869:2:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 1768, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1762, + "name": "ElementaryTypeName", + "src": "3902:7:2" + } + ], + "id": 1763, + "name": "VariableDeclaration", + "src": "3902:7:2" + } + ], + "id": 1764, + "name": "ParameterList", + "src": "3901:9:2" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 1764 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1550, + "type": "uint256", + "value": "_totalSupply" + }, + "id": 1765, + "name": "Identifier", + "src": "3928:12:2" + } + ], + "id": 1766, + "name": "Return", + "src": "3921:19:2" + } + ], + "id": 1767, + "name": "Block", + "src": "3911:36:2" + } + ], + "id": 1768, + "name": "FunctionDefinition", + "src": "3849:98:2" + }, + { + "attributes": { + "baseFunctions": [3025], + "functionSelector": "70a08231", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "balanceOf", + "scope": 2147, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev See {IERC20-balanceOf}." + }, + "id": 1769, + "name": "StructuredDocumentation", + "src": "3953:47:2" + }, + { + "attributes": { + "overrides": [null] + }, + "id": 1773, + "name": "OverrideSpecifier", + "src": "4053:8:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "account", + "overrides": null, + "scope": 1782, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1770, + "name": "ElementaryTypeName", + "src": "4024:7:2" + } + ], + "id": 1771, + "name": "VariableDeclaration", + "src": "4024:15:2" + } + ], + "id": 1772, + "name": "ParameterList", + "src": "4023:17:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 1782, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1774, + "name": "ElementaryTypeName", + "src": "4071:7:2" + } + ], + "id": 1775, + "name": "VariableDeclaration", + "src": "4071:7:2" + } + ], + "id": 1776, + "name": "ParameterList", + "src": "4070:9:2" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 1776 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1542, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 1777, + "name": "Identifier", + "src": "4097:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1771, + "type": "address", + "value": "account" + }, + "id": 1778, + "name": "Identifier", + "src": "4107:7:2" + } + ], + "id": 1779, + "name": "IndexAccess", + "src": "4097:18:2" + } + ], + "id": 1780, + "name": "Return", + "src": "4090:25:2" + } + ], + "id": 1781, + "name": "Block", + "src": "4080:42:2" + } + ], + "id": 1782, + "name": "FunctionDefinition", + "src": "4005:117:2" + }, + { + "attributes": { + "baseFunctions": [3035], + "functionSelector": "a9059cbb", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "transfer", + "scope": 2147, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`." + }, + "id": 1783, + "name": "StructuredDocumentation", + "src": "4128:192:2" + }, + { + "attributes": { + "overrides": [null] + }, + "id": 1789, + "name": "OverrideSpecifier", + "src": "4385:8:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 1803, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1784, + "name": "ElementaryTypeName", + "src": "4343:7:2" + } + ], + "id": 1785, + "name": "VariableDeclaration", + "src": "4343:17:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "8892:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "overrides": null, + "scope": 1803, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" }, - "src": "8862:36:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1708, - "nodeType": "ExpressionStatement", - "src": "8862:36:3" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ + "children": [ { - "argumentTypes": null, - "id": 1710, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1674, - "src": "8922:5:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1711, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "8929:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1712, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "8938:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1786, + "name": "ElementaryTypeName", + "src": "4362:7:2" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1709, - "name": "Approval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2024, - "src": "8913:8:3", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } + "id": 1787, + "name": "VariableDeclaration", + "src": "4362:14:2" + } + ], + "id": 1788, + "name": "ParameterList", + "src": "4342:35:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 1803, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" }, - "id": 1713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8913:32:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 1790, + "name": "ElementaryTypeName", + "src": "4403:4:2" + } + ], + "id": 1791, + "name": "VariableDeclaration", + "src": "4403:4:2" + } + ], + "id": 1792, + "name": "ParameterList", + "src": "4402:6:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1997, + "type": "function (address,address,uint256)", + "value": "_transfer" + }, + "id": 1793, + "name": "Identifier", + "src": "4419:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 1794, + "name": "Identifier", + "src": "4429:10:2" + } + ], + "id": 1795, + "name": "FunctionCall", + "src": "4429:12:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1785, + "type": "address", + "value": "recipient" + }, + "id": 1796, + "name": "Identifier", + "src": "4443:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1787, + "type": "uint256", + "value": "amount" + }, + "id": 1797, + "name": "Identifier", + "src": "4454:6:2" + } + ], + "id": 1798, + "name": "FunctionCall", + "src": "4419:42:2" + } + ], + "id": 1799, + "name": "ExpressionStatement", + "src": "4419:42:2" }, - "id": 1714, - "nodeType": "EmitStatement", - "src": "8908:37:3" - } - ] - }, - "documentation": { - "id": 1672, - "nodeType": "StructuredDocumentation", - "src": "8201:414:3", - "text": " @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n This is internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." - }, - "id": 1716, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_approve", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1679, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1674, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1716, - "src": "8638:13:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1673, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8638:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1676, - "mutability": "mutable", - "name": "spender", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1716, - "src": "8653:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1675, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8653:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1678, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1716, - "src": "8670:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1677, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8670:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "8637:48:3" - }, - "returnParameters": { - "id": 1680, - "nodeType": "ParameterList", - "parameters": [], - "src": "8695:0:3" - }, - "scope": 1728, - "src": "8620:332:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" + { + "attributes": { + "functionReturnParameters": 1792 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 1800, + "name": "Literal", + "src": "4478:4:2" + } + ], + "id": 1801, + "name": "Return", + "src": "4471:11:2" + } + ], + "id": 1802, + "name": "Block", + "src": "4409:80:2" + } + ], + "id": 1803, + "name": "FunctionDefinition", + "src": "4325:164:2" }, { - "body": { - "id": 1726, - "nodeType": "Block", - "src": "9325:38:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1722, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1312, - "src": "9335:9:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } + "attributes": { + "baseFunctions": [3045], + "functionSelector": "dd62ed3e", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "allowance", + "scope": 2147, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev See {IERC20-allowance}." + }, + "id": 1804, + "name": "StructuredDocumentation", + "src": "4495:47:2" + }, + { + "attributes": { + "overrides": [null] + }, + "id": 1810, + "name": "OverrideSpecifier", + "src": "4610:8:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "owner", + "overrides": null, + "scope": 1821, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1723, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1805, + "name": "ElementaryTypeName", + "src": "4566:7:2" + } + ], + "id": 1806, + "name": "VariableDeclaration", + "src": "4566:13:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 1821, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1807, + "name": "ElementaryTypeName", + "src": "4581:7:2" + } + ], + "id": 1808, + "name": "VariableDeclaration", + "src": "4581:15:2" + } + ], + "id": 1809, + "name": "ParameterList", + "src": "4565:32:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 1821, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1811, + "name": "ElementaryTypeName", + "src": "4628:7:2" + } + ], + "id": 1812, + "name": "VariableDeclaration", + "src": "4628:7:2" + } + ], + "id": 1813, + "name": "ParameterList", + "src": "4627:9:2" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 1813 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1548, + "type": "mapping(address => mapping(address => uint256))", + "value": "_allowances" + }, + "id": 1814, + "name": "Identifier", + "src": "4654:11:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1806, + "type": "address", + "value": "owner" + }, + "id": 1815, + "name": "Identifier", + "src": "4666:5:2" + } + ], + "id": 1816, + "name": "IndexAccess", + "src": "4654:18:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1808, + "type": "address", + "value": "spender" + }, + "id": 1817, + "name": "Identifier", + "src": "4673:7:2" + } + ], + "id": 1818, + "name": "IndexAccess", + "src": "4654:27:2" + } + ], + "id": 1819, + "name": "Return", + "src": "4647:34:2" + } + ], + "id": 1820, + "name": "Block", + "src": "4637:51:2" + } + ], + "id": 1821, + "name": "FunctionDefinition", + "src": "4547:141:2" + }, + { + "attributes": { + "baseFunctions": [3055], + "functionSelector": "095ea7b3", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "approve", + "scope": 2147, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address." + }, + "id": 1822, + "name": "StructuredDocumentation", + "src": "4694:127:2" + }, + { + "attributes": { + "overrides": [null] + }, + "id": 1828, + "name": "OverrideSpecifier", + "src": "4883:8:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 1842, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1823, + "name": "ElementaryTypeName", + "src": "4843:7:2" + } + ], + "id": 1824, + "name": "VariableDeclaration", + "src": "4843:15:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 1842, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1825, + "name": "ElementaryTypeName", + "src": "4860:7:2" + } + ], + "id": 1826, + "name": "VariableDeclaration", + "src": "4860:14:2" + } + ], + "id": 1827, + "name": "ParameterList", + "src": "4842:33:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 1842, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 1829, + "name": "ElementaryTypeName", + "src": "4901:4:2" + } + ], + "id": 1830, + "name": "VariableDeclaration", + "src": "4901:4:2" + } + ], + "id": 1831, + "name": "ParameterList", + "src": "4900:6:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2135, + "type": "function (address,address,uint256)", + "value": "_approve" + }, + "id": 1832, + "name": "Identifier", + "src": "4917:8:2" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 1833, + "name": "Identifier", + "src": "4926:10:2" + } + ], + "id": 1834, + "name": "FunctionCall", + "src": "4926:12:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1824, + "type": "address", + "value": "spender" + }, + "id": 1835, + "name": "Identifier", + "src": "4940:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1826, + "type": "uint256", + "value": "amount" + }, + "id": 1836, + "name": "Identifier", + "src": "4949:6:2" + } + ], + "id": 1837, + "name": "FunctionCall", + "src": "4917:39:2" + } + ], + "id": 1838, + "name": "ExpressionStatement", + "src": "4917:39:2" + }, + { + "attributes": { + "functionReturnParameters": 1831 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 1839, + "name": "Literal", + "src": "4973:4:2" + } + ], + "id": 1840, + "name": "Return", + "src": "4966:11:2" + } + ], + "id": 1841, + "name": "Block", + "src": "4907:77:2" + } + ], + "id": 1842, + "name": "FunctionDefinition", + "src": "4826:158:2" + }, + { + "attributes": { + "baseFunctions": [3067], + "functionSelector": "23b872dd", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "transferFrom", + "scope": 2147, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20};\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`." + }, + "id": 1843, + "name": "StructuredDocumentation", + "src": "4990:449:2" + }, + { + "attributes": { + "overrides": [null] + }, + "id": 1851, + "name": "OverrideSpecifier", + "src": "5524:8:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "sender", + "overrides": null, + "scope": 1880, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1844, + "name": "ElementaryTypeName", + "src": "5466:7:2" + } + ], + "id": 1845, + "name": "VariableDeclaration", + "src": "5466:14:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 1880, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1846, + "name": "ElementaryTypeName", + "src": "5482:7:2" + } + ], + "id": 1847, + "name": "VariableDeclaration", + "src": "5482:17:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 1880, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1848, + "name": "ElementaryTypeName", + "src": "5501:7:2" + } + ], + "id": 1849, + "name": "VariableDeclaration", + "src": "5501:14:2" + } + ], + "id": 1850, + "name": "ParameterList", + "src": "5465:51:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 1880, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 1852, + "name": "ElementaryTypeName", + "src": "5542:4:2" + } + ], + "id": 1853, + "name": "VariableDeclaration", + "src": "5542:4:2" + } + ], + "id": 1854, + "name": "ParameterList", + "src": "5541:6:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1997, + "type": "function (address,address,uint256)", + "value": "_transfer" + }, + "id": 1855, + "name": "Identifier", + "src": "5558:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1845, + "type": "address", + "value": "sender" + }, + "id": 1856, + "name": "Identifier", + "src": "5568:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1847, + "type": "address", + "value": "recipient" + }, + "id": 1857, + "name": "Identifier", + "src": "5576:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1849, + "type": "uint256", + "value": "amount" + }, + "id": 1858, + "name": "Identifier", + "src": "5587:6:2" + } + ], + "id": 1859, + "name": "FunctionCall", + "src": "5558:36:2" + } + ], + "id": 1860, + "name": "ExpressionStatement", + "src": "5558:36:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2135, + "type": "function (address,address,uint256)", + "value": "_approve" + }, + "id": 1861, + "name": "Identifier", + "src": "5604:8:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1845, + "type": "address", + "value": "sender" + }, + "id": 1862, + "name": "Identifier", + "src": "5613:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 1863, + "name": "Identifier", + "src": "5621:10:2" + } + ], + "id": 1864, + "name": "FunctionCall", + "src": "5621:12:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 2456, + "type": "function (uint256,uint256,string memory) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1548, + "type": "mapping(address => mapping(address => uint256))", + "value": "_allowances" + }, + "id": 1865, + "name": "Identifier", + "src": "5635:11:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1845, + "type": "address", + "value": "sender" + }, + "id": 1866, + "name": "Identifier", + "src": "5647:6:2" + } + ], + "id": 1867, + "name": "IndexAccess", + "src": "5635:19:2" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 1868, + "name": "Identifier", + "src": "5655:10:2" + } + ], + "id": 1869, + "name": "FunctionCall", + "src": "5655:12:2" + } + ], + "id": 1870, + "name": "IndexAccess", + "src": "5635:33:2" + } + ], + "id": 1871, + "name": "MemberAccess", + "src": "5635:37:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1849, + "type": "uint256", + "value": "amount" + }, + "id": 1872, + "name": "Identifier", + "src": "5673:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: transfer amount exceeds allowance\"", + "value": "ERC20: transfer amount exceeds allowance" + }, + "id": 1873, + "name": "Literal", + "src": "5681:42:2" + } + ], + "id": 1874, + "name": "FunctionCall", + "src": "5635:89:2" + } + ], + "id": 1875, + "name": "FunctionCall", + "src": "5604:121:2" + } + ], + "id": 1876, + "name": "ExpressionStatement", + "src": "5604:121:2" + }, + { + "attributes": { + "functionReturnParameters": 1854 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 1877, + "name": "Literal", + "src": "5742:4:2" + } + ], + "id": 1878, + "name": "Return", + "src": "5735:11:2" + } + ], + "id": 1879, + "name": "Block", + "src": "5548:205:2" + } + ], + "id": 1880, + "name": "FunctionDefinition", + "src": "5444:309:2" + }, + { + "attributes": { + "functionSelector": "39509351", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "increaseAllowance", + "overrides": null, + "scope": 2147, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." + }, + "id": 1881, + "name": "StructuredDocumentation", + "src": "5759:384:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 1908, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1882, + "name": "ElementaryTypeName", + "src": "6175:7:2" + } + ], + "id": 1883, + "name": "VariableDeclaration", + "src": "6175:15:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "addedValue", + "overrides": null, + "scope": 1908, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1884, + "name": "ElementaryTypeName", + "src": "6192:7:2" + } + ], + "id": 1885, + "name": "VariableDeclaration", + "src": "6192:18:2" + } + ], + "id": 1886, + "name": "ParameterList", + "src": "6174:37:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 1908, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 1887, + "name": "ElementaryTypeName", + "src": "6228:4:2" + } + ], + "id": 1888, + "name": "VariableDeclaration", + "src": "6228:4:2" + } + ], + "id": 1889, + "name": "ParameterList", + "src": "6227:6:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2135, + "type": "function (address,address,uint256)", + "value": "_approve" + }, + "id": 1890, + "name": "Identifier", + "src": "6244:8:2" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 1891, + "name": "Identifier", + "src": "6253:10:2" + } + ], + "id": 1892, + "name": "FunctionCall", + "src": "6253:12:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1883, + "type": "address", + "value": "spender" + }, + "id": 1893, + "name": "Identifier", + "src": "6267:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 2332, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1548, + "type": "mapping(address => mapping(address => uint256))", + "value": "_allowances" + }, + "id": 1894, + "name": "Identifier", + "src": "6276:11:2" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 1895, + "name": "Identifier", + "src": "6288:10:2" + } + ], + "id": 1896, + "name": "FunctionCall", + "src": "6288:12:2" + } + ], + "id": 1897, + "name": "IndexAccess", + "src": "6276:25:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1883, + "type": "address", + "value": "spender" + }, + "id": 1898, + "name": "Identifier", + "src": "6302:7:2" + } + ], + "id": 1899, + "name": "IndexAccess", + "src": "6276:34:2" + } + ], + "id": 1900, + "name": "MemberAccess", + "src": "6276:38:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1885, + "type": "uint256", + "value": "addedValue" + }, + "id": 1901, + "name": "Identifier", + "src": "6315:10:2" + } + ], + "id": 1902, + "name": "FunctionCall", + "src": "6276:50:2" + } + ], + "id": 1903, + "name": "FunctionCall", + "src": "6244:83:2" + } + ], + "id": 1904, + "name": "ExpressionStatement", + "src": "6244:83:2" + }, + { + "attributes": { + "functionReturnParameters": 1889 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 1905, + "name": "Literal", + "src": "6344:4:2" + } + ], + "id": 1906, + "name": "Return", + "src": "6337:11:2" + } + ], + "id": 1907, + "name": "Block", + "src": "6234:121:2" + } + ], + "id": 1908, + "name": "FunctionDefinition", + "src": "6148:207:2" + }, + { + "attributes": { + "functionSelector": "a457c2d7", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "decreaseAllowance", + "overrides": null, + "scope": 2147, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." + }, + "id": 1909, + "name": "StructuredDocumentation", + "src": "6361:476:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 1937, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1910, + "name": "ElementaryTypeName", + "src": "6869:7:2" + } + ], + "id": 1911, + "name": "VariableDeclaration", + "src": "6869:15:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "subtractedValue", + "overrides": null, + "scope": 1937, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1912, + "name": "ElementaryTypeName", + "src": "6886:7:2" + } + ], + "id": 1913, + "name": "VariableDeclaration", + "src": "6886:23:2" + } + ], + "id": 1914, + "name": "ParameterList", + "src": "6868:42:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "", + "overrides": null, + "scope": 1937, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 1915, + "name": "ElementaryTypeName", + "src": "6927:4:2" + } + ], + "id": 1916, + "name": "VariableDeclaration", + "src": "6927:4:2" + } + ], + "id": 1917, + "name": "ParameterList", + "src": "6926:6:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 2135, + "type": "function (address,address,uint256)", + "value": "_approve" + }, + "id": 1918, + "name": "Identifier", + "src": "6943:8:2" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 1919, + "name": "Identifier", + "src": "6952:10:2" + } + ], + "id": 1920, + "name": "FunctionCall", + "src": "6952:12:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1911, + "type": "address", + "value": "spender" + }, + "id": 1921, + "name": "Identifier", + "src": "6966:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 2456, + "type": "function (uint256,uint256,string memory) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1548, + "type": "mapping(address => mapping(address => uint256))", + "value": "_allowances" + }, + "id": 1922, + "name": "Identifier", + "src": "6975:11:2" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 3606, + "type": "function () view returns (address payable)", + "value": "_msgSender" + }, + "id": 1923, + "name": "Identifier", + "src": "6987:10:2" + } + ], + "id": 1924, + "name": "FunctionCall", + "src": "6987:12:2" + } + ], + "id": 1925, + "name": "IndexAccess", + "src": "6975:25:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1911, + "type": "address", + "value": "spender" + }, + "id": 1926, + "name": "Identifier", + "src": "7001:7:2" + } + ], + "id": 1927, + "name": "IndexAccess", + "src": "6975:34:2" + } + ], + "id": 1928, + "name": "MemberAccess", + "src": "6975:38:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1913, + "type": "uint256", + "value": "subtractedValue" + }, + "id": 1929, + "name": "Identifier", + "src": "7014:15:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: decreased allowance below zero\"", + "value": "ERC20: decreased allowance below zero" + }, + "id": 1930, + "name": "Literal", + "src": "7031:39:2" + } + ], + "id": 1931, + "name": "FunctionCall", + "src": "6975:96:2" + } + ], + "id": 1932, + "name": "FunctionCall", + "src": "6943:129:2" + } + ], + "id": 1933, + "name": "ExpressionStatement", + "src": "6943:129:2" + }, + { + "attributes": { + "functionReturnParameters": 1917 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 1934, + "name": "Literal", + "src": "7089:4:2" + } + ], + "id": 1935, + "name": "Return", + "src": "7082:11:2" + } + ], + "id": 1936, + "name": "Block", + "src": "6933:167:2" + } + ], + "id": 1937, + "name": "FunctionDefinition", + "src": "6842:258:2" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_transfer", + "overrides": null, + "scope": 2147, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`." + }, + "id": 1938, + "name": "StructuredDocumentation", + "src": "7106:463:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "sender", + "overrides": null, + "scope": 1997, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1939, + "name": "ElementaryTypeName", + "src": "7593:7:2" + } + ], + "id": 1940, + "name": "VariableDeclaration", + "src": "7593:14:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "recipient", + "overrides": null, + "scope": 1997, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1941, + "name": "ElementaryTypeName", + "src": "7609:7:2" + } + ], + "id": 1942, + "name": "VariableDeclaration", + "src": "7609:17:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 1997, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 1943, + "name": "ElementaryTypeName", + "src": "7628:7:2" + } + ], + "id": 1944, + "name": "VariableDeclaration", + "src": "7628:14:2" + } + ], + "id": 1945, + "name": "ParameterList", + "src": "7592:51:2" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 1946, + "name": "ParameterList", + "src": "7653:0:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1947, + "name": "Identifier", + "src": "7663:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1940, + "type": "address", + "value": "sender" + }, + "id": 1948, + "name": "Identifier", + "src": "7671:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 1949, + "name": "ElementaryTypeName", + "src": "7681:7:2" + } + ], + "id": 1950, + "name": "ElementaryTypeNameExpression", + "src": "7681:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 1951, + "name": "Literal", + "src": "7689:1:2" + } + ], + "id": 1952, + "name": "FunctionCall", + "src": "7681:10:2" + } + ], + "id": 1953, + "name": "BinaryOperation", + "src": "7671:20:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: transfer from the zero address\"", + "value": "ERC20: transfer from the zero address" + }, + "id": 1954, + "name": "Literal", + "src": "7693:39:2" + } + ], + "id": 1955, + "name": "FunctionCall", + "src": "7663:70:2" + } + ], + "id": 1956, + "name": "ExpressionStatement", + "src": "7663:70:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 1957, + "name": "Identifier", + "src": "7743:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1942, + "type": "address", + "value": "recipient" + }, + "id": 1958, + "name": "Identifier", + "src": "7751:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 1959, + "name": "ElementaryTypeName", + "src": "7764:7:2" + } + ], + "id": 1960, + "name": "ElementaryTypeNameExpression", + "src": "7764:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 1961, + "name": "Literal", + "src": "7772:1:2" + } + ], + "id": 1962, + "name": "FunctionCall", + "src": "7764:10:2" + } + ], + "id": 1963, + "name": "BinaryOperation", + "src": "7751:23:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: transfer to the zero address\"", + "value": "ERC20: transfer to the zero address" + }, + "id": 1964, + "name": "Literal", + "src": "7776:37:2" + } + ], + "id": 1965, + "name": "FunctionCall", + "src": "7743:71:2" + } + ], + "id": 1966, + "name": "ExpressionStatement", + "src": "7743:71:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1542, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 1967, + "name": "Identifier", + "src": "7825:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1940, + "type": "address", + "value": "sender" + }, + "id": 1968, + "name": "Identifier", + "src": "7835:6:2" + } + ], + "id": 1969, + "name": "IndexAccess", + "src": "7825:17:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 2456, + "type": "function (uint256,uint256,string memory) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1542, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 1970, + "name": "Identifier", + "src": "7845:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1940, + "type": "address", + "value": "sender" + }, + "id": 1971, + "name": "Identifier", + "src": "7855:6:2" + } + ], + "id": 1972, + "name": "IndexAccess", + "src": "7845:17:2" + } + ], + "id": 1973, + "name": "MemberAccess", + "src": "7845:21:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1944, + "type": "uint256", + "value": "amount" + }, + "id": 1974, + "name": "Identifier", + "src": "7867:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: transfer amount exceeds balance\"", + "value": "ERC20: transfer amount exceeds balance" + }, + "id": 1975, + "name": "Literal", + "src": "7875:40:2" + } + ], + "id": 1976, + "name": "FunctionCall", + "src": "7845:71:2" + } + ], + "id": 1977, + "name": "Assignment", + "src": "7825:91:2" + } + ], + "id": 1978, + "name": "ExpressionStatement", + "src": "7825:91:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1542, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 1979, + "name": "Identifier", + "src": "7926:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1942, + "type": "address", + "value": "recipient" + }, + "id": 1980, + "name": "Identifier", + "src": "7936:9:2" + } + ], + "id": 1981, + "name": "IndexAccess", + "src": "7926:20:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 2332, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1542, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 1982, + "name": "Identifier", + "src": "7949:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1942, + "type": "address", + "value": "recipient" + }, + "id": 1983, + "name": "Identifier", + "src": "7959:9:2" + } + ], + "id": 1984, + "name": "IndexAccess", + "src": "7949:20:2" + } + ], + "id": 1985, + "name": "MemberAccess", + "src": "7949:24:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1944, + "type": "uint256", + "value": "amount" + }, + "id": 1986, + "name": "Identifier", + "src": "7974:6:2" + } + ], + "id": 1987, + "name": "FunctionCall", + "src": "7949:32:2" + } + ], + "id": 1988, + "name": "Assignment", + "src": "7926:55:2" + } + ], + "id": 1989, + "name": "ExpressionStatement", + "src": "7926:55:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3076, + "type": "function (address,address,uint256)", + "value": "Transfer" + }, + "id": 1990, + "name": "Identifier", + "src": "7996:8:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1940, + "type": "address", + "value": "sender" + }, + "id": 1991, + "name": "Identifier", + "src": "8005:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1942, + "type": "address", + "value": "recipient" + }, + "id": 1992, + "name": "Identifier", + "src": "8013:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1944, + "type": "uint256", + "value": "amount" + }, + "id": 1993, + "name": "Identifier", + "src": "8024:6:2" + } + ], + "id": 1994, + "name": "FunctionCall", + "src": "7996:35:2" + } + ], + "id": 1995, + "name": "EmitStatement", + "src": "7991:40:2" + } + ], + "id": 1996, + "name": "Block", + "src": "7653:385:2" + } + ], + "id": 1997, + "name": "FunctionDefinition", + "src": "7574:464:2" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_mint", + "overrides": null, + "scope": 2147, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements\n - `to` cannot be the zero address." + }, + "id": 1998, + "name": "StructuredDocumentation", + "src": "8044:259:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "account", + "overrides": null, + "scope": 2043, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 1999, + "name": "ElementaryTypeName", + "src": "8323:7:2" + } + ], + "id": 2000, + "name": "VariableDeclaration", + "src": "8323:15:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 2043, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2001, + "name": "ElementaryTypeName", + "src": "8340:7:2" + } + ], + "id": 2002, + "name": "VariableDeclaration", + "src": "8340:14:2" + } + ], + "id": 2003, + "name": "ParameterList", + "src": "8322:33:2" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2004, + "name": "ParameterList", + "src": "8365:0:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2005, + "name": "Identifier", + "src": "8375:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2000, + "type": "address", + "value": "account" + }, + "id": 2006, + "name": "Identifier", + "src": "8383:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2007, + "name": "ElementaryTypeName", + "src": "8394:7:2" + } + ], + "id": 2008, + "name": "ElementaryTypeNameExpression", + "src": "8394:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2009, + "name": "Literal", + "src": "8402:1:2" + } + ], + "id": 2010, + "name": "FunctionCall", + "src": "8394:10:2" + } + ], + "id": 2011, + "name": "BinaryOperation", + "src": "8383:21:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: mint to the zero address\"", + "value": "ERC20: mint to the zero address" + }, + "id": 2012, + "name": "Literal", + "src": "8406:33:2" + } + ], + "id": 2013, + "name": "FunctionCall", + "src": "8375:65:2" + } + ], + "id": 2014, + "name": "ExpressionStatement", + "src": "8375:65:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1550, + "type": "uint256", + "value": "_totalSupply" + }, + "id": 2015, + "name": "Identifier", + "src": "8451:12:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 2332, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1550, + "type": "uint256", + "value": "_totalSupply" + }, + "id": 2016, + "name": "Identifier", + "src": "8466:12:2" + } + ], + "id": 2017, + "name": "MemberAccess", + "src": "8466:16:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2002, + "type": "uint256", + "value": "amount" + }, + "id": 2018, + "name": "Identifier", + "src": "8483:6:2" + } + ], + "id": 2019, + "name": "FunctionCall", + "src": "8466:24:2" + } + ], + "id": 2020, + "name": "Assignment", + "src": "8451:39:2" + } + ], + "id": 2021, + "name": "ExpressionStatement", + "src": "8451:39:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1542, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 2022, + "name": "Identifier", + "src": "8500:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2000, + "type": "address", + "value": "account" + }, + "id": 2023, + "name": "Identifier", + "src": "8510:7:2" + } + ], + "id": 2024, + "name": "IndexAccess", + "src": "8500:18:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 2332, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1542, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 2025, + "name": "Identifier", + "src": "8521:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2000, + "type": "address", + "value": "account" + }, + "id": 2026, + "name": "Identifier", + "src": "8531:7:2" + } + ], + "id": 2027, + "name": "IndexAccess", + "src": "8521:18:2" + } + ], + "id": 2028, + "name": "MemberAccess", + "src": "8521:22:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2002, + "type": "uint256", + "value": "amount" + }, + "id": 2029, + "name": "Identifier", + "src": "8544:6:2" + } + ], + "id": 2030, + "name": "FunctionCall", + "src": "8521:30:2" + } + ], + "id": 2031, + "name": "Assignment", + "src": "8500:51:2" + } + ], + "id": 2032, + "name": "ExpressionStatement", + "src": "8500:51:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3076, + "type": "function (address,address,uint256)", + "value": "Transfer" + }, + "id": 2033, + "name": "Identifier", + "src": "8566:8:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2034, + "name": "ElementaryTypeName", + "src": "8575:7:2" + } + ], + "id": 2035, + "name": "ElementaryTypeNameExpression", + "src": "8575:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2036, + "name": "Literal", + "src": "8583:1:2" + } + ], + "id": 2037, + "name": "FunctionCall", + "src": "8575:10:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2000, + "type": "address", + "value": "account" + }, + "id": 2038, + "name": "Identifier", + "src": "8587:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2002, + "type": "uint256", + "value": "amount" + }, + "id": 2039, + "name": "Identifier", + "src": "8596:6:2" + } + ], + "id": 2040, + "name": "FunctionCall", + "src": "8566:37:2" + } + ], + "id": 2041, + "name": "EmitStatement", + "src": "8561:42:2" + } + ], + "id": 2042, + "name": "Block", + "src": "8365:245:2" + } + ], + "id": 2043, + "name": "FunctionDefinition", + "src": "8308:302:2" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_burn", + "overrides": null, + "scope": 2147, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." + }, + "id": 2044, + "name": "StructuredDocumentation", + "src": "8616:308:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "account", + "overrides": null, + "scope": 2090, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2045, + "name": "ElementaryTypeName", + "src": "8944:7:2" + } + ], + "id": 2046, + "name": "VariableDeclaration", + "src": "8944:15:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 2090, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2047, + "name": "ElementaryTypeName", + "src": "8961:7:2" + } + ], + "id": 2048, + "name": "VariableDeclaration", + "src": "8961:14:2" + } + ], + "id": 2049, + "name": "ParameterList", + "src": "8943:33:2" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2050, + "name": "ParameterList", + "src": "8986:0:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2051, + "name": "Identifier", + "src": "8996:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2046, + "type": "address", + "value": "account" + }, + "id": 2052, + "name": "Identifier", + "src": "9004:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2053, + "name": "ElementaryTypeName", + "src": "9015:7:2" + } + ], + "id": 2054, + "name": "ElementaryTypeNameExpression", + "src": "9015:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2055, + "name": "Literal", + "src": "9023:1:2" + } + ], + "id": 2056, + "name": "FunctionCall", + "src": "9015:10:2" + } + ], + "id": 2057, + "name": "BinaryOperation", + "src": "9004:21:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: burn from the zero address\"", + "value": "ERC20: burn from the zero address" + }, + "id": 2058, + "name": "Literal", + "src": "9027:35:2" + } + ], + "id": 2059, + "name": "FunctionCall", + "src": "8996:67:2" + } + ], + "id": 2060, + "name": "ExpressionStatement", + "src": "8996:67:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1542, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 2061, + "name": "Identifier", + "src": "9074:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2046, + "type": "address", + "value": "account" + }, + "id": 2062, + "name": "Identifier", + "src": "9084:7:2" + } + ], + "id": 2063, + "name": "IndexAccess", + "src": "9074:18:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 2456, + "type": "function (uint256,uint256,string memory) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1542, + "type": "mapping(address => uint256)", + "value": "_balances" + }, + "id": 2064, + "name": "Identifier", + "src": "9095:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2046, + "type": "address", + "value": "account" + }, + "id": 2065, + "name": "Identifier", + "src": "9105:7:2" + } + ], + "id": 2066, + "name": "IndexAccess", + "src": "9095:18:2" + } + ], + "id": 2067, + "name": "MemberAccess", + "src": "9095:22:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2048, + "type": "uint256", + "value": "amount" + }, + "id": 2068, + "name": "Identifier", + "src": "9118:6:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: burn amount exceeds balance\"", + "value": "ERC20: burn amount exceeds balance" + }, + "id": 2069, + "name": "Literal", + "src": "9126:36:2" + } + ], + "id": 2070, + "name": "FunctionCall", + "src": "9095:68:2" + } + ], + "id": 2071, + "name": "Assignment", + "src": "9074:89:2" + } + ], + "id": 2072, + "name": "ExpressionStatement", + "src": "9074:89:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1550, + "type": "uint256", + "value": "_totalSupply" + }, + "id": 2073, + "name": "Identifier", + "src": "9173:12:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 2354, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1550, + "type": "uint256", + "value": "_totalSupply" + }, + "id": 2074, + "name": "Identifier", + "src": "9188:12:2" + } + ], + "id": 2075, + "name": "MemberAccess", + "src": "9188:16:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2048, + "type": "uint256", + "value": "amount" + }, + "id": 2076, + "name": "Identifier", + "src": "9205:6:2" + } + ], + "id": 2077, + "name": "FunctionCall", + "src": "9188:24:2" + } + ], + "id": 2078, + "name": "Assignment", + "src": "9173:39:2" + } + ], + "id": 2079, + "name": "ExpressionStatement", + "src": "9173:39:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3076, + "type": "function (address,address,uint256)", + "value": "Transfer" + }, + "id": 2080, + "name": "Identifier", + "src": "9227:8:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2046, + "type": "address", + "value": "account" + }, + "id": 2081, + "name": "Identifier", + "src": "9236:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2082, + "name": "ElementaryTypeName", + "src": "9245:7:2" + } + ], + "id": 2083, + "name": "ElementaryTypeNameExpression", + "src": "9245:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2084, + "name": "Literal", + "src": "9253:1:2" + } + ], + "id": 2085, + "name": "FunctionCall", + "src": "9245:10:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2048, + "type": "uint256", + "value": "amount" + }, + "id": 2086, + "name": "Identifier", + "src": "9257:6:2" + } + ], + "id": 2087, + "name": "FunctionCall", + "src": "9227:37:2" + } + ], + "id": 2088, + "name": "EmitStatement", + "src": "9222:42:2" + } + ], + "id": 2089, + "name": "Block", + "src": "8986:285:2" + } + ], + "id": 2090, + "name": "FunctionDefinition", + "src": "8929:342:2" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_approve", + "overrides": null, + "scope": 2147, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n This is internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." + }, + "id": 2091, + "name": "StructuredDocumentation", + "src": "9277:414:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "owner", + "overrides": null, + "scope": 2135, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2092, + "name": "ElementaryTypeName", + "src": "9714:7:2" + } + ], + "id": 2093, + "name": "VariableDeclaration", + "src": "9714:13:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "spender", + "overrides": null, + "scope": 2135, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 2094, + "name": "ElementaryTypeName", + "src": "9729:7:2" + } + ], + "id": 2095, + "name": "VariableDeclaration", + "src": "9729:15:2" + }, + { + "attributes": { + "constant": false, + "mutability": "mutable", + "name": "amount", + "overrides": null, + "scope": 2135, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 2096, + "name": "ElementaryTypeName", + "src": "9746:7:2" + } + ], + "id": 2097, + "name": "VariableDeclaration", + "src": "9746:14:2" + } + ], + "id": 2098, + "name": "ParameterList", + "src": "9713:48:2" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2099, + "name": "ParameterList", + "src": "9771:0:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2100, + "name": "Identifier", + "src": "9781:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2093, + "type": "address", + "value": "owner" + }, + "id": 2101, + "name": "Identifier", + "src": "9789:5:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2102, + "name": "ElementaryTypeName", + "src": "9798:7:2" + } + ], + "id": 2103, + "name": "ElementaryTypeNameExpression", + "src": "9798:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2104, + "name": "Literal", + "src": "9806:1:2" + } + ], + "id": 2105, + "name": "FunctionCall", + "src": "9798:10:2" + } + ], + "id": 2106, + "name": "BinaryOperation", + "src": "9789:19:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: approve from the zero address\"", + "value": "ERC20: approve from the zero address" + }, + "id": 2107, + "name": "Literal", + "src": "9810:38:2" + } + ], + "id": 2108, + "name": "FunctionCall", + "src": "9781:68:2" + } + ], + "id": 2109, + "name": "ExpressionStatement", + "src": "9781:68:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + } + ], + "overloadedDeclarations": [-18, -18], + "referencedDeclaration": -18, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 2110, + "name": "Identifier", + "src": "9859:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2095, + "type": "address", + "value": "spender" + }, + "id": 2111, + "name": "Identifier", + "src": "9867:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": null + }, + "id": 2112, + "name": "ElementaryTypeName", + "src": "9878:7:2" + } + ], + "id": 2113, + "name": "ElementaryTypeNameExpression", + "src": "9878:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 2114, + "name": "Literal", + "src": "9886:1:2" + } + ], + "id": 2115, + "name": "FunctionCall", + "src": "9878:10:2" + } + ], + "id": 2116, + "name": "BinaryOperation", + "src": "9867:21:2" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"ERC20: approve to the zero address\"", + "value": "ERC20: approve to the zero address" + }, + "id": 2117, + "name": "Literal", + "src": "9890:36:2" + } + ], + "id": 2118, + "name": "FunctionCall", + "src": "9859:68:2" + } + ], + "id": 2119, + "name": "ExpressionStatement", + "src": "9859:68:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1548, + "type": "mapping(address => mapping(address => uint256))", + "value": "_allowances" + }, + "id": 2120, + "name": "Identifier", + "src": "9938:11:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2093, + "type": "address", + "value": "owner" + }, + "id": 2121, + "name": "Identifier", + "src": "9950:5:2" + } + ], + "id": 2123, + "name": "IndexAccess", + "src": "9938:18:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2095, + "type": "address", + "value": "spender" + }, + "id": 2122, + "name": "Identifier", + "src": "9957:7:2" + } + ], + "id": 2124, + "name": "IndexAccess", + "src": "9938:27:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2097, + "type": "uint256", + "value": "amount" + }, + "id": 2125, + "name": "Identifier", + "src": "9968:6:2" + } + ], + "id": 2126, + "name": "Assignment", + "src": "9938:36:2" + } + ], + "id": 2127, + "name": "ExpressionStatement", + "src": "9938:36:2" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "tryCall": false, + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 3085, + "type": "function (address,address,uint256)", + "value": "Approval" + }, + "id": 2128, + "name": "Identifier", + "src": "9989:8:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2093, + "type": "address", + "value": "owner" + }, + "id": 2129, + "name": "Identifier", + "src": "9998:5:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2095, + "type": "address", + "value": "spender" + }, + "id": 2130, + "name": "Identifier", + "src": "10005:7:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2097, + "type": "uint256", + "value": "amount" + }, + "id": 2131, + "name": "Identifier", + "src": "10014:6:2" + } + ], + "id": 2132, + "name": "FunctionCall", + "src": "9989:32:2" + } + ], + "id": 2133, + "name": "EmitStatement", + "src": "9984:37:2" + } + ], + "id": 2134, + "name": "Block", + "src": "9771:257:2" + } + ], + "id": 2135, + "name": "FunctionDefinition", + "src": "9696:332:2" + }, + { + "attributes": { + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_setupDecimals", + "overrides": null, + "scope": 2147, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "text": " @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does." + }, + "id": 2136, + "name": "StructuredDocumentation", + "src": "10034:312:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "mutability": "mutable", "name": "decimals_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1719, - "src": "9347:9:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } + "overrides": null, + "scope": 2146, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" }, - "src": "9335:21:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 1725, - "nodeType": "ExpressionStatement", - "src": "9335:21:3" - } - ] - }, - "documentation": { - "id": 1717, - "nodeType": "StructuredDocumentation", - "src": "8958:312:3", - "text": " @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does." - }, - "id": 1727, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setupDecimals", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1720, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1719, - "mutability": "mutable", - "name": "decimals_", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1727, - "src": "9299:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1718, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "9299:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9298:17:3" - }, - "returnParameters": { - "id": 1721, - "nodeType": "ParameterList", - "parameters": [], - "src": "9325:0:3" - }, - "scope": 1728, - "src": "9275:88:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 2137, + "name": "ElementaryTypeName", + "src": "10375:5:2" + } + ], + "id": 2138, + "name": "VariableDeclaration", + "src": "10375:15:2" + } + ], + "id": 2139, + "name": "ParameterList", + "src": "10374:17:2" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 2140, + "name": "ParameterList", + "src": "10401:0:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint8" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1555, + "type": "uint8", + "value": "_decimals" + }, + "id": 2141, + "name": "Identifier", + "src": "10411:9:2" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 2138, + "type": "uint8", + "value": "decimals_" + }, + "id": 2142, + "name": "Identifier", + "src": "10423:9:2" + } + ], + "id": 2143, + "name": "Assignment", + "src": "10411:21:2" + } + ], + "id": 2144, + "name": "ExpressionStatement", + "src": "10411:21:2" + } + ], + "id": 2145, + "name": "Block", + "src": "10401:38:2" + } + ], + "id": 2146, + "name": "FunctionDefinition", + "src": "10351:88:2" } ], - "scope": 1729, - "src": "304:9061:3" + "id": 2147, + "name": "ContractDefinition", + "src": "304:10137:2" } ], - "src": "67:9299:3" + "id": 2148, + "name": "SourceUnit", + "src": "67:10375:2" }, "compiler": { "name": "solc", "version": "0.6.12+commit.27d51765.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.2.3", - "updatedAt": "2020-08-06T18:00:08.730Z", + "schemaVersion": "3.3.4", + "updatedAt": "2021-04-12T21:53:29.906Z", "devdoc": { "kind": "dev", "methods": { diff --git a/packages/bridge/package.json b/packages/bridge/package.json index 226bae8..5d1152e 100644 --- a/packages/bridge/package.json +++ b/packages/bridge/package.json @@ -47,6 +47,7 @@ "eventemitter3": "^4.0.7", "fortmatic": "^2.2.1", "identicon.js": "^2.3.3", + "javascript-time-ago": "^2.3.4", "jazzicon": "^1.5.0", "lodash": "^4.17.20", "react": "16.13.1", @@ -97,12 +98,14 @@ "@types/bn.js": "^5.1.0", "@types/bs58": "^4.0.1", "@types/identicon.js": "^2.3.0", + "@types/javascript-time-ago": "^2.0.2", "@types/jest": "^24.9.1", "@types/node": "^12.12.62", "arweave-deploy": "^1.9.1", "gh-pages": "^3.1.0", "npm-link-shared": "0.5.6", - "prettier": "^2.1.2" + "prettier": "^2.1.2", + "typechain": "^4.0.3" }, "peerDependencies": { "react": "*", diff --git a/packages/bridge/public/home/background.svg b/packages/bridge/public/home/background.svg index 334a87c..6f28399 100644 --- a/packages/bridge/public/home/background.svg +++ b/packages/bridge/public/home/background.svg @@ -1,4 +1,4 @@ - + @@ -27,18 +27,6 @@ - - - - - - - - - - - - @@ -50,12 +38,6 @@ - - - - - - @@ -96,34 +78,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/bridge/public/home/main-logo.svg b/packages/bridge/public/home/main-logo.svg new file mode 100644 index 0000000..79faaf0 --- /dev/null +++ b/packages/bridge/public/home/main-logo.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/bridge/public/transfer/background.svg b/packages/bridge/public/transfer/background.svg new file mode 100644 index 0000000..9ca6f2c --- /dev/null +++ b/packages/bridge/public/transfer/background.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/bridge/public/transfer/input.svg b/packages/bridge/public/transfer/input.svg new file mode 100644 index 0000000..afc68b5 --- /dev/null +++ b/packages/bridge/public/transfer/input.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/bridge/public/transfer/select-bg.svg b/packages/bridge/public/transfer/select-bg.svg new file mode 100644 index 0000000..113b8b4 --- /dev/null +++ b/packages/bridge/public/transfer/select-bg.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/bridge/src/App.less b/packages/bridge/src/App.less index ee32476..86561c5 100644 --- a/packages/bridge/src/App.less +++ b/packages/bridge/src/App.less @@ -140,10 +140,6 @@ em { padding: 6px 16px !important; } -.ant-table { - margin: 0px 30px; -} - .ant-menu-inline-collapsed > .ant-menu-item { padding-left: 16px !important; } diff --git a/packages/bridge/src/components/AppBar/index.less b/packages/bridge/src/components/AppBar/index.less index 7888594..0d8ac1c 100644 --- a/packages/bridge/src/components/AppBar/index.less +++ b/packages/bridge/src/components/AppBar/index.less @@ -1,5 +1,22 @@ @import "_colors"; -.app-left { + + +header.ant-layout-header.App-Bar { + position: absolute; + width: 100%; + background: transparent; + display: flex; + justify-content: center; + height: 80px; + + .nav-burger { + cursor: pointer; + display: none; + } + +} + +.app-bar-item.logo { position: absolute; left: 10%; } @@ -12,6 +29,7 @@ min-width: 50%; justify-content: center; height: auto; + align-items: center; .app-bar-item { cursor: pointer; padding: 0 30px; @@ -25,3 +43,57 @@ } } } + +@media screen and (min-width: 901px) { + header.ant-layout-header.App-Bar { + width: 100% !important; + } +} +@media screen and (max-width: 1200px) { + + .app-bar-item.logo { + position: relative; + left: 0; + } + .app-bar-item.app-right{ + position: relative; + left: 0; + padding: 0; + } +} +@media screen and (max-width: 900px) { + header.ant-layout-header.App-Bar { + position: fixed; + transition: ease-in-out 0.5s; + width: 0; + max-width: 240px; + height: 100%; + flex-direction: column; + justify-content: flex-start; + padding: 0; + .nav-burger { + display: inline-block; + left: 30px; + position: relative; + transition: ease-in-out 0.5s; + z-index: 10; + } + .app-bar-inner { + //opacity: 0; + left: -100px; + position: relative; + transition: ease-in-out 0.5s; + flex-direction: column; + } + background: #06101a; + & > .nav-burger.mobile-active { + width: 30px; + position: relative; + left: 0; + } + + .app-bar-inner.mobile-active { + left: 0px; + } + } +} diff --git a/packages/bridge/src/components/AppBar/index.tsx b/packages/bridge/src/components/AppBar/index.tsx index 0b3baaa..75ade9b 100644 --- a/packages/bridge/src/components/AppBar/index.tsx +++ b/packages/bridge/src/components/AppBar/index.tsx @@ -1,8 +1,17 @@ -import React, { useCallback } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import './index.less'; import { Link, useLocation } from 'react-router-dom'; +import { + MenuFoldOutlined, + MenuUnfoldOutlined, + SettingOutlined, +} from '@ant-design/icons'; +import { Button, Popover } from 'antd'; +import { LABELS } from '../../constants'; +import { Settings } from '@oyster/common'; -export const AppBar = () => { +export const AppBar = (props: { isRoot?: boolean }) => { + const [showMobileMenu, setShowMobileMenu] = useState(false); const location = useLocation(); const isActiveClass = useCallback( @@ -12,16 +21,62 @@ export const AppBar = () => { [location], ); + useEffect(() => { + const header = document.getElementById('app-header'); + if (header) { + header.style.width = showMobileMenu ? '100%' : '0'; + } + }, [showMobileMenu, document.body.offsetWidth]); + return ( -
-
- Bridge + <> + setShowMobileMenu(!showMobileMenu)} + > + {showMobileMenu ? ( + + ) : ( + + )} + +
+ {!props.isRoot && ( +
+ + logo-bar + +
+ )} +
+ Bridge +
+
+ FAQ +
+
+ Proof-of-Assets +
+
+ Help +
+ {!props.isRoot && ( + } + trigger="click" + > +
-
FAQ
-
- Proof-of-Assets -
-
Help
-
+ ); }; diff --git a/packages/bridge/src/components/EthereumConnect/index.less b/packages/bridge/src/components/EthereumConnect/index.less new file mode 100644 index 0000000..bd16d9c --- /dev/null +++ b/packages/bridge/src/components/EthereumConnect/index.less @@ -0,0 +1,58 @@ +@import "_colors"; + +.ant-btn-group.ant-dropdown-button { + button { + text-transform: uppercase; + color: white; + background: #E67828; + //border-radius: 8px; + height: 40px; + } + button:first-child { + width: 134px; + border-bottom-left-radius: 8px !important; + border-top-left-radius: 8px !important; + } + button:last-child { + border-bottom-right-radius: 8px !important; + border-top-right-radius: 8px !important; + } +} + +.eth-connect { + display: flex; + justify-content: center; + & > button { + color: white; + background: #E67828; + border-radius: 8px; + height: 40px; + width: 166px; + } + + .eth-address { + position: relative; + width: 183px; + height: 48px; + background: @tungsten-100; + border: 2px solid #193650; + box-sizing: border-box; + border-radius: 8px; + + font-size: 16px; + line-height: 21px; + color: #03E1FF; + display: flex; + justify-content: space-evenly; + align-items: center; + } + .disconnect { + cursor: pointer; + color: #193650; + font-size: 16px; + &:hover { + transform: scale(1.3); + transition: ease-out 0.5s; + } + } +} diff --git a/packages/bridge/src/components/EthereumConnect/index.tsx b/packages/bridge/src/components/EthereumConnect/index.tsx index 9bfa1c3..fbc14ea 100644 --- a/packages/bridge/src/components/EthereumConnect/index.tsx +++ b/packages/bridge/src/components/EthereumConnect/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Button, Dropdown, Menu } from 'antd'; +import './index.less'; import { useCorrectNetwork } from '../../hooks/useCorrectNetwork'; import { shortenAddress } from '@oyster/common'; @@ -12,6 +13,7 @@ export const EthereumConnect = () => { connected, walletProvider, select, + disconnect, } = useEthereum(); const { hasCorrespondingNetworks } = useCorrectNetwork(); @@ -24,10 +26,10 @@ export const EthereumConnect = () => { ); return ( -
+
{connected ? ( hasCorrespondingNetworks ? ( - <> +
{'ethereum-icon'} { src={walletProvider.icon} /> {shortenAddress(accounts[0], 4)} - + disconnect()}> + X + +
) : ( )}
diff --git a/packages/bridge/src/components/Input/input.tsx b/packages/bridge/src/components/Input/input.tsx index ec94502..07a5205 100644 --- a/packages/bridge/src/components/Input/input.tsx +++ b/packages/bridge/src/components/Input/input.tsx @@ -1,9 +1,18 @@ -import React, { useState } from 'react'; -import { NumericInput } from '@oyster/common'; -import { Card } from 'antd'; +import React, { useEffect, useState } from 'react'; +import { + ConnectButton, + CurrentUserWalletBadge, + NumericInput, + useMint, + useUserAccounts, + useWallet, +} from '@oyster/common'; import './style.less'; import { ASSET_CHAIN } from '../../models/bridge/constants'; import { TokenSelectModal } from '../TokenSelectModal'; +import { chainToName } from '../../utils/assets'; +import { TokenChain } from '../TokenDisplay/tokenChain'; +import { EthereumConnect } from '../EthereumConnect'; export function Input(props: { title: string; @@ -14,34 +23,58 @@ export function Input(props: { amount?: number | null; onChain: (chain: ASSET_CHAIN) => void; onInputChange: (value: number | undefined) => void; + className?: string; }) { + const { connected } = useWallet(); const [lastAmount, setLastAmount] = useState(''); + const { userAccounts } = useUserAccounts(); + const [balance, setBalance] = useState(0); + const mint = useMint(props.asset?.startsWith('0x') ? '' : props.asset); + + useEffect(() => { + if (props.chain === ASSET_CHAIN.Solana) { + const currentAccount = userAccounts?.find( + a => a.info.mint.toBase58() === props.asset, + ); + if (currentAccount && mint) { + setBalance( + currentAccount.info.amount.toNumber() / Math.pow(10, mint.decimals), + ); + } else { + setBalance(0); + } + } + }, [props.asset, props.chain, userAccounts, mint]); return ( - -
-
{props.title}
- - {!!props.balance && ( +
+
{props.title}
+
+ + {chainToName(props.chain)} + {props.chain !== ASSET_CHAIN.Solana ? ( + typeof props.balance === 'number' && ( +
+ props.onInputChange && props.onInputChange(props.balance) + } + > + {props.balance.toFixed(10)} +
+ ) + ) : (
- props.onInputChange && props.onInputChange(props.balance) - } + className="balance" + onClick={() => props.onInputChange && props.onInputChange(balance)} > - Balance: {props.balance.toFixed(6)} + {balance.toFixed(10)}
)}
-
+
-
+
props.setAsset(token)} onChain={(chain: ASSET_CHAIN) => props.onChain(chain)} asset={props.asset} chain={props.chain} + showIconChain={false} />
- + {props.chain === ASSET_CHAIN.Ethereum ? ( + + ) : connected ? ( + + ) : ( + + )} +
); } diff --git a/packages/bridge/src/components/Input/style.less b/packages/bridge/src/components/Input/style.less index 1fd4b7d..04e46b2 100644 --- a/packages/bridge/src/components/Input/style.less +++ b/packages/bridge/src/components/Input/style.less @@ -1,3 +1,5 @@ +@import "_colors"; + .multichain-option { display: flex; align-items: center; @@ -95,3 +97,119 @@ .ant-select-dropdown { width: 150px !important; } + +.dashed-input-container { + width: 342px; + height: 342px; + + border: 4px dotted; + border-radius: 50%; + box-sizing: border-box; + &.left { + border-color: #6E1080; + } + &.right { + border-color: #008051; + } + .input-header{ + margin-top: 26px; + display: block; + text-align: center; + font-style: normal; + font-weight: normal; + font-size: 16px; + line-height: 21px; + color: @tungsten-40; + } + .input-chain{ + margin-top: 13px; + font-style: normal; + font-weight: normal; + font-size: 20px; + line-height: 24px; + .input-icon { + margin-right: 10px; + } + .balance { + margin-top: 22px; + font-size: 12px; + line-height: 16px; + color: @tungsten-60 + } + } + + .input-container{ + position: relative; + margin: 16px -36px 34px -36px ; + height: 66px; + + background-image: url('/transfer/input.svg'); + background-size: 100% 66px; + background-repeat: no-repeat; + + input.input { + padding: 0 36px 0 36px; + font-size: 32px; + line-height: 39px; + color: @tungsten-80; + height: 100%; + } + .input-select { + display: flex; + align-content: center; + flex-direction: row; + position: absolute; + right: 11px; + top: 7px; + height: 52px; + width: 161px; + padding: 0 19px; + background-image: url(/transfer/select-bg.svg); + background-size: 100% 52px; + background-repeat: no-repeat; + .token-chain-logo { + position: relative; + width: auto; + height: auto; + display: flex; + } + .token-logo { + width: 32px; + height: 32px; + } + } + } +} + +.wallet-wrapper { + display: flex; + justify-content: center; + padding: 0; + + .wallet-key { + position: relative; + width: 183px; + height: 48px; + background: @tungsten-100; + border: 2px solid #193650; + box-sizing: border-box; + border-radius: 8px; + padding: 0; + margin: 0; + font-size: 16px; + line-height: 21px; + color: #03E1FF; + display: flex; + justify-content: space-evenly; + align-items: center; + .disconnect { + cursor: pointer; + color: #193650; + font-size: 16px; + &:hover { + transform: scale(1.3); + transition: ease-out 0.5s; + } + } + } +} diff --git a/packages/bridge/src/components/Layout/index.tsx b/packages/bridge/src/components/Layout/index.tsx index c5d1ec0..2544222 100644 --- a/packages/bridge/src/components/Layout/index.tsx +++ b/packages/bridge/src/components/Layout/index.tsx @@ -1,63 +1,24 @@ -import React, { useEffect, useState } from 'react'; +import React from 'react'; import './../../App.less'; import './index.less'; -import { Layout, Button, Popover } from 'antd'; -import { Link, useLocation } from 'react-router-dom'; +import { Layout } from 'antd'; +import { useLocation } from 'react-router-dom'; import { LABELS } from '../../constants'; import { AppBar } from '../AppBar'; -import Wormhole from '../Wormhole'; -import { Footer as AppFooter } from './../Footer'; -import { EthereumConnect } from '../EthereumConnect'; -import { useEthereum } from '../../contexts'; -import { Settings } from '@oyster/common'; -import { SettingOutlined } from '@ant-design/icons'; const { Header, Content, Footer } = Layout; export const AppLayout = React.memo((props: any) => { - const { connected, disconnect } = useEthereum(); const location = useLocation(); - const [wormholeReady, setWormholeReady] = useState(false); - - const paths: { [key: string]: string } = { - '/faucet': '7', - }; - const isRoot = location.pathname === '/'; - const current = - [...Object.keys(paths)].find(key => location.pathname.startsWith(key)) || - ''; return ( <>
-
- {!isRoot && ( -
- - - -
- )} - - {!isRoot && ( - } - trigger="click" - > -