{
  "contractName": "ScriptHelpers",
  "abi": [],
  "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058206ecd9ca1299724a28a36f794767abdec7400e163f65beb6ac93b5bbbcd8555870029",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058206ecd9ca1299724a28a36f794767abdec7400e163f65beb6ac93b5bbbcd8555870029",
  "sourceMap": "71:1409:45:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24",
  "deployedSourceMap": "71:1409:45:-;;;;;;;;",
  "source": "/*\n * SPDX-License-Identitifer:    MIT\n */\n\npragma solidity ^0.4.24;\n\n\nlibrary ScriptHelpers {\n    function getSpecId(bytes _script) internal pure returns (uint32) {\n        return uint32At(_script, 0);\n    }\n\n    function uint256At(bytes _data, uint256 _location) internal pure returns (uint256 result) {\n        assembly {\n            result := mload(add(_data, add(0x20, _location)))\n        }\n    }\n\n    function addressAt(bytes _data, uint256 _location) internal pure returns (address result) {\n        uint256 word = uint256At(_data, _location);\n\n        assembly {\n            result := div(and(word, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000),\n            0x1000000000000000000000000)\n        }\n    }\n\n    function uint32At(bytes _data, uint256 _location) internal pure returns (uint32 result) {\n        uint256 word = uint256At(_data, _location);\n\n        assembly {\n            result := div(and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000),\n            0x100000000000000000000000000000000000000000000000000000000)\n        }\n    }\n\n    function locationOf(bytes _data, uint256 _location) internal pure returns (uint256 result) {\n        assembly {\n            result := add(_data, add(0x20, _location))\n        }\n    }\n\n    function toBytes(bytes4 _sig) internal pure returns (bytes) {\n        bytes memory payload = new bytes(4);\n        assembly { mstore(add(payload, 0x20), _sig) }\n        return payload;\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
    "exportedSymbols": {
      "ScriptHelpers": [
        11962
      ]
    },
    "id": 11963,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11872,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:45"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 11962,
        "linearizedBaseContracts": [
          11962
        ],
        "name": "ScriptHelpers",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 11884,
              "nodeType": "Block",
              "src": "164:44:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11880,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11874,
                        "src": "190:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 11881,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "199:1:45",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 11879,
                      "name": "uint32At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11932,
                      "src": "181:8:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                      }
                    },
                    "id": 11882,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "181:20:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 11878,
                  "id": 11883,
                  "nodeType": "Return",
                  "src": "174:27:45"
                }
              ]
            },
            "documentation": null,
            "id": 11885,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getSpecId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11875,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11874,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 11885,
                  "src": "118:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11873,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "118:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "117:15:45"
            },
            "payable": false,
            "returnParameters": {
              "id": 11878,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11877,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11885,
                  "src": "156:6:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 11876,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "156:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "155:8:45"
            },
            "scope": 11962,
            "src": "99:109:45",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11895,
              "nodeType": "Block",
              "src": "304:98:45",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 11892,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "337:6:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "_data": {
                        "declaration": 11887,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "357:5:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "_location": {
                        "declaration": 11889,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "374:9:45",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 11894,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := mload(add(_data, add(0x20, _location)))\n}",
                  "src": "314:88:45"
                }
              ]
            },
            "documentation": null,
            "id": 11896,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "uint256At",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11890,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11887,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 11896,
                  "src": "233:11:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11886,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "233:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11889,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 11896,
                  "src": "246:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11888,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "246:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "232:32:45"
            },
            "payable": false,
            "returnParameters": {
              "id": 11893,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11892,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 11896,
                  "src": "288:14:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11891,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "288:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "287:16:45"
            },
            "scope": 11962,
            "src": "214:188:45",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11913,
              "nodeType": "Block",
              "src": "498:235:45",
              "statements": [
                {
                  "assignments": [
                    11906
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11906,
                      "name": "word",
                      "nodeType": "VariableDeclaration",
                      "scope": 11914,
                      "src": "508:12:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11905,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "508:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11911,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11908,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11898,
                        "src": "533:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11909,
                        "name": "_location",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11900,
                        "src": "540:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11907,
                      "name": "uint256At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11896,
                      "src": "523:9:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 11910,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "523:27:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "508:42:45"
                },
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 11903,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "584:6:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "word": {
                        "declaration": 11906,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "602:4:45",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 11912,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := div(and(word, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000), 0x1000000000000000000000000)\n}",
                  "src": "561:172:45"
                }
              ]
            },
            "documentation": null,
            "id": 11914,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "addressAt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11898,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 11914,
                  "src": "427:11:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11897,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "427:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11900,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 11914,
                  "src": "440:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11899,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "440:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "426:32:45"
            },
            "payable": false,
            "returnParameters": {
              "id": 11904,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11903,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 11914,
                  "src": "482:14:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11902,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "482:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "481:16:45"
            },
            "scope": 11962,
            "src": "408:325:45",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11931,
              "nodeType": "Block",
              "src": "827:267:45",
              "statements": [
                {
                  "assignments": [
                    11924
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11924,
                      "name": "word",
                      "nodeType": "VariableDeclaration",
                      "scope": 11932,
                      "src": "837:12:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11923,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "837:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11929,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11926,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11916,
                        "src": "862:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11927,
                        "name": "_location",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11918,
                        "src": "869:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11925,
                      "name": "uint256At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11896,
                      "src": "852:9:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 11928,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "852:27:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "837:42:45"
                },
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 11921,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "913:6:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "word": {
                        "declaration": 11924,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "931:4:45",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 11930,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := div(and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000), 0x100000000000000000000000000000000000000000000000000000000)\n}",
                  "src": "890:204:45"
                }
              ]
            },
            "documentation": null,
            "id": 11932,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "uint32At",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11916,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 11932,
                  "src": "757:11:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11915,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "757:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11918,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 11932,
                  "src": "770:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11917,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "770:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "756:32:45"
            },
            "payable": false,
            "returnParameters": {
              "id": 11922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11921,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 11932,
                  "src": "812:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 11920,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "812:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "811:15:45"
            },
            "scope": 11962,
            "src": "739:355:45",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11942,
              "nodeType": "Block",
              "src": "1191:91:45",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 11939,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1224:6:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "_data": {
                        "declaration": 11934,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1238:5:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "_location": {
                        "declaration": 11936,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1255:9:45",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 11941,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := add(_data, add(0x20, _location))\n}",
                  "src": "1201:81:45"
                }
              ]
            },
            "documentation": null,
            "id": 11943,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "locationOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11934,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 11943,
                  "src": "1120:11:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11933,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11936,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 11943,
                  "src": "1133:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11935,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1133:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1119:32:45"
            },
            "payable": false,
            "returnParameters": {
              "id": 11940,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11939,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 11943,
                  "src": "1175:14:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11938,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1175:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1174:16:45"
            },
            "scope": 11962,
            "src": "1100:182:45",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11960,
              "nodeType": "Block",
              "src": "1348:130:45",
              "statements": [
                {
                  "assignments": [
                    11951
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11951,
                      "name": "payload",
                      "nodeType": "VariableDeclaration",
                      "scope": 11961,
                      "src": "1358:20:45",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11950,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1358:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11956,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 11954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1391:1:45",
                        "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"
                        }
                      ],
                      "id": 11953,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1381:9:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 11952,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1385:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 11955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1381:12:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1358:35:45"
                },
                {
                  "externalReferences": [
                    {
                      "_sig": {
                        "declaration": 11945,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1441:4:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "payload": {
                        "declaration": 11951,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1425:7:45",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 11957,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    mstore(add(payload, 0x20), _sig)\n}",
                  "src": "1403:60:45"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11958,
                    "name": "payload",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11951,
                    "src": "1464:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 11949,
                  "id": 11959,
                  "nodeType": "Return",
                  "src": "1457:14:45"
                }
              ]
            },
            "documentation": null,
            "id": 11961,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "toBytes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11946,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11945,
                  "name": "_sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 11961,
                  "src": "1305:11:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 11944,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1305:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1304:13:45"
            },
            "payable": false,
            "returnParameters": {
              "id": 11949,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11948,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11961,
                  "src": "1341:5:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11947,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1341:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1340:7:45"
            },
            "scope": 11962,
            "src": "1288:190:45",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 11963,
        "src": "71:1409:45"
      }
    ],
    "src": "44:1437:45"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
    "exportedSymbols": {
      "ScriptHelpers": [
        11962
      ]
    },
    "id": 11963,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11872,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:45"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 11962,
        "linearizedBaseContracts": [
          11962
        ],
        "name": "ScriptHelpers",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 11884,
              "nodeType": "Block",
              "src": "164:44:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11880,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11874,
                        "src": "190:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 11881,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "199:1:45",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 11879,
                      "name": "uint32At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11932,
                      "src": "181:8:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                      }
                    },
                    "id": 11882,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "181:20:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 11878,
                  "id": 11883,
                  "nodeType": "Return",
                  "src": "174:27:45"
                }
              ]
            },
            "documentation": null,
            "id": 11885,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getSpecId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11875,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11874,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 11885,
                  "src": "118:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11873,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "118:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "117:15:45"
            },
            "payable": false,
            "returnParameters": {
              "id": 11878,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11877,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11885,
                  "src": "156:6:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 11876,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "156:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "155:8:45"
            },
            "scope": 11962,
            "src": "99:109:45",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11895,
              "nodeType": "Block",
              "src": "304:98:45",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 11892,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "337:6:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "_data": {
                        "declaration": 11887,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "357:5:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "_location": {
                        "declaration": 11889,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "374:9:45",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 11894,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := mload(add(_data, add(0x20, _location)))\n}",
                  "src": "314:88:45"
                }
              ]
            },
            "documentation": null,
            "id": 11896,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "uint256At",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11890,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11887,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 11896,
                  "src": "233:11:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11886,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "233:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11889,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 11896,
                  "src": "246:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11888,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "246:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "232:32:45"
            },
            "payable": false,
            "returnParameters": {
              "id": 11893,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11892,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 11896,
                  "src": "288:14:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11891,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "288:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "287:16:45"
            },
            "scope": 11962,
            "src": "214:188:45",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11913,
              "nodeType": "Block",
              "src": "498:235:45",
              "statements": [
                {
                  "assignments": [
                    11906
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11906,
                      "name": "word",
                      "nodeType": "VariableDeclaration",
                      "scope": 11914,
                      "src": "508:12:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11905,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "508:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11911,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11908,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11898,
                        "src": "533:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11909,
                        "name": "_location",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11900,
                        "src": "540:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11907,
                      "name": "uint256At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11896,
                      "src": "523:9:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 11910,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "523:27:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "508:42:45"
                },
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 11903,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "584:6:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "word": {
                        "declaration": 11906,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "602:4:45",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 11912,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := div(and(word, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000), 0x1000000000000000000000000)\n}",
                  "src": "561:172:45"
                }
              ]
            },
            "documentation": null,
            "id": 11914,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "addressAt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11898,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 11914,
                  "src": "427:11:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11897,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "427:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11900,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 11914,
                  "src": "440:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11899,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "440:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "426:32:45"
            },
            "payable": false,
            "returnParameters": {
              "id": 11904,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11903,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 11914,
                  "src": "482:14:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11902,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "482:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "481:16:45"
            },
            "scope": 11962,
            "src": "408:325:45",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11931,
              "nodeType": "Block",
              "src": "827:267:45",
              "statements": [
                {
                  "assignments": [
                    11924
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11924,
                      "name": "word",
                      "nodeType": "VariableDeclaration",
                      "scope": 11932,
                      "src": "837:12:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11923,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "837:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11929,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11926,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11916,
                        "src": "862:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11927,
                        "name": "_location",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11918,
                        "src": "869:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11925,
                      "name": "uint256At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11896,
                      "src": "852:9:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 11928,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "852:27:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "837:42:45"
                },
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 11921,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "913:6:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "word": {
                        "declaration": 11924,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "931:4:45",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 11930,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := div(and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000), 0x100000000000000000000000000000000000000000000000000000000)\n}",
                  "src": "890:204:45"
                }
              ]
            },
            "documentation": null,
            "id": 11932,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "uint32At",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11916,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 11932,
                  "src": "757:11:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11915,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "757:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11918,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 11932,
                  "src": "770:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11917,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "770:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "756:32:45"
            },
            "payable": false,
            "returnParameters": {
              "id": 11922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11921,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 11932,
                  "src": "812:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 11920,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "812:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "811:15:45"
            },
            "scope": 11962,
            "src": "739:355:45",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11942,
              "nodeType": "Block",
              "src": "1191:91:45",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 11939,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1224:6:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "_data": {
                        "declaration": 11934,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1238:5:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "_location": {
                        "declaration": 11936,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1255:9:45",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 11941,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := add(_data, add(0x20, _location))\n}",
                  "src": "1201:81:45"
                }
              ]
            },
            "documentation": null,
            "id": 11943,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "locationOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11934,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 11943,
                  "src": "1120:11:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11933,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11936,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 11943,
                  "src": "1133:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11935,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1133:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1119:32:45"
            },
            "payable": false,
            "returnParameters": {
              "id": 11940,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11939,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 11943,
                  "src": "1175:14:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11938,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1175:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1174:16:45"
            },
            "scope": 11962,
            "src": "1100:182:45",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11960,
              "nodeType": "Block",
              "src": "1348:130:45",
              "statements": [
                {
                  "assignments": [
                    11951
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11951,
                      "name": "payload",
                      "nodeType": "VariableDeclaration",
                      "scope": 11961,
                      "src": "1358:20:45",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11950,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1358:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11956,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 11954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1391:1:45",
                        "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"
                        }
                      ],
                      "id": 11953,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1381:9:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 11952,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1385:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 11955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1381:12:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1358:35:45"
                },
                {
                  "externalReferences": [
                    {
                      "_sig": {
                        "declaration": 11945,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1441:4:45",
                        "valueSize": 1
                      }
                    },
                    {
                      "payload": {
                        "declaration": 11951,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1425:7:45",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 11957,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    mstore(add(payload, 0x20), _sig)\n}",
                  "src": "1403:60:45"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11958,
                    "name": "payload",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11951,
                    "src": "1464:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 11949,
                  "id": 11959,
                  "nodeType": "Return",
                  "src": "1457:14:45"
                }
              ]
            },
            "documentation": null,
            "id": 11961,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "toBytes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11946,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11945,
                  "name": "_sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 11961,
                  "src": "1305:11:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 11944,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1305:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1304:13:45"
            },
            "payable": false,
            "returnParameters": {
              "id": 11949,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11948,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11961,
                  "src": "1341:5:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11947,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1341:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1340:7:45"
            },
            "scope": 11962,
            "src": "1288:190:45",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 11963,
        "src": "71:1409:45"
      }
    ],
    "src": "44:1437:45"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-09-04T11:02:55.768Z"
}