{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "d",
          "type": "uint32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "localDomain",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60a060405234801561001057600080fd5b506040516100de3803806100de8339818101604052602081101561003357600080fd5b505160e081901b6001600160e01b03191660805263ffffffff16607d61006160003980604e5250607d6000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80638d3638f414602d575b600080fd5b6033604c565b6040805163ffffffff9092168252519081900360200190f35b7f00000000000000000000000000000000000000000000000000000000000000009056fea164736f6c6343000706000a",
    "sourceMap": "161:193:32:-:0;;;213:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;213:50:32;-1:-1:-1;246:10:32;;;;;;;161:193;;-1:-1:-1;161:193:32;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c80638d3638f414602d575b600080fd5b6033604c565b6040805163ffffffff9092168252519081900360200190f35b7f00000000000000000000000000000000000000000000000000000000000000009056fea164736f6c6343000706000a",
    "sourceMap": "161:193:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;268:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;339:6;268:84;:::o",
    "linkReferences": {},
    "immutableReferences": {
      "28960": [
        {
          "start": 78,
          "length": 32
        }
      ]
    }
  },
  "methodIdentifiers": {
    "localDomain()": "8d3638f4"
  },
  "ast": {
    "absolutePath": "packages/contracts-router/contracts/test/Router.t.sol",
    "id": 29340,
    "exportedSymbols": {
      "DSTest": [
        1786
      ],
      "MockXcm": [
        28979
      ],
      "RouterHarness": [
        29690
      ],
      "RouterTest": [
        29339
      ],
      "Script": [
        2021
      ],
      "StdStorage": [
        5000
      ],
      "Test": [
        4902
      ],
      "Vm": [
        6909
      ],
      "console": [
        14973
      ],
      "console2": [
        23037
      ],
      "stdError": [
        4972
      ],
      "stdJson": [
        2380
      ],
      "stdMath": [
        6215
      ],
      "stdStorage": [
        6076
      ]
    },
    "nodeType": "SourceUnit",
    "src": "46:3381:32",
    "nodes": [
      {
        "id": 28955,
        "nodeType": "PragmaDirective",
        "src": "46:22:32",
        "literals": [
          "solidity",
          "0.7",
          ".6"
        ]
      },
      {
        "id": 28956,
        "nodeType": "ImportDirective",
        "src": "70:28:32",
        "absolutePath": "lib/forge-std/src/Test.sol",
        "file": "forge-std/Test.sol",
        "scope": 29340,
        "sourceUnit": 6216,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 28958,
        "nodeType": "ImportDirective",
        "src": "99:60:32",
        "absolutePath": "packages/contracts-router/contracts/test/harnesses/RouterHarness.sol",
        "file": "./harnesses/RouterHarness.sol",
        "scope": 29340,
        "sourceUnit": 29691,
        "symbolAliases": [
          {
            "foreign": {
              "id": 28957,
              "name": "RouterHarness",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "107:13:32",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 28979,
        "nodeType": "ContractDefinition",
        "src": "161:193:32",
        "nodes": [
          {
            "id": 28960,
            "nodeType": "VariableDeclaration",
            "src": "184:23:32",
            "constant": false,
            "mutability": "immutable",
            "name": "domain",
            "scope": 28979,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint32",
              "typeString": "uint32"
            },
            "typeName": {
              "id": 28959,
              "name": "uint32",
              "nodeType": "ElementaryTypeName",
              "src": "184:6:32",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 28970,
            "nodeType": "FunctionDefinition",
            "src": "213:50:32",
            "body": {
              "id": 28969,
              "nodeType": "Block",
              "src": "236:27:32",
              "statements": [
                {
                  "expression": {
                    "id": 28967,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 28965,
                      "name": "domain",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 28960,
                      "src": "246:6:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 28966,
                      "name": "d",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 28962,
                      "src": "255:1:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "246:10:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "id": 28968,
                  "nodeType": "ExpressionStatement",
                  "src": "246:10:32"
                }
              ]
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "parameters": {
              "id": 28963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 28962,
                  "mutability": "mutable",
                  "name": "d",
                  "nodeType": "VariableDeclaration",
                  "scope": 28970,
                  "src": "226:8:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 28961,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "226:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "225:10:32"
            },
            "returnParameters": {
              "id": 28964,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "236:0:32"
            },
            "scope": 28979,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 28978,
            "nodeType": "FunctionDefinition",
            "src": "268:84:32",
            "body": {
              "id": 28977,
              "nodeType": "Block",
              "src": "322:30:32",
              "statements": [
                {
                  "expression": {
                    "id": 28975,
                    "name": "domain",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 28960,
                    "src": "339:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 28974,
                  "id": 28976,
                  "nodeType": "Return",
                  "src": "332:13:32"
                }
              ]
            },
            "functionSelector": "8d3638f4",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "localDomain",
            "parameters": {
              "id": 28971,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "288:2:32"
            },
            "returnParameters": {
              "id": 28974,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 28973,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 28978,
                  "src": "314:6:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 28972,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "314:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "313:8:32"
            },
            "scope": 28979,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          28979
        ],
        "name": "MockXcm",
        "scope": 29340
      },
      {
        "id": 29339,
        "nodeType": "ContractDefinition",
        "src": "356:3070:32",
        "nodes": [
          {
            "id": 28983,
            "nodeType": "VariableDeclaration",
            "src": "390:20:32",
            "constant": false,
            "mutability": "mutable",
            "name": "router",
            "scope": 29339,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_RouterHarness_$29690",
              "typeString": "contract RouterHarness"
            },
            "typeName": {
              "id": 28982,
              "name": "RouterHarness",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 29690,
              "src": "390:13:32",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RouterHarness_$29690",
                "typeString": "contract RouterHarness"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 28985,
            "nodeType": "VariableDeclaration",
            "src": "417:17:32",
            "constant": false,
            "mutability": "mutable",
            "name": "testDomain",
            "scope": 29339,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint32",
              "typeString": "uint32"
            },
            "typeName": {
              "id": 28984,
              "name": "uint32",
              "nodeType": "ElementaryTypeName",
              "src": "417:6:32",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 28987,
            "nodeType": "VariableDeclaration",
            "src": "440:18:32",
            "constant": false,
            "mutability": "mutable",
            "name": "testRouter",
            "scope": 29339,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 28986,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "440:7:32",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 28990,
            "nodeType": "VariableDeclaration",
            "src": "465:33:32",
            "constant": true,
            "mutability": "constant",
            "name": "localDomain",
            "scope": 29339,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint32",
              "typeString": "uint32"
            },
            "typeName": {
              "id": 28988,
              "name": "uint32",
              "nodeType": "ElementaryTypeName",
              "src": "465:6:32",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              }
            },
            "value": {
              "hexValue": "313131",
              "id": 28989,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "495:3:32",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_111_by_1",
                "typeString": "int_const 111"
              },
              "value": "111"
            },
            "visibility": "internal"
          },
          {
            "id": 29035,
            "nodeType": "FunctionDefinition",
            "src": "505:443:32",
            "body": {
              "id": 29034,
              "nodeType": "Block",
              "src": "529:419:32",
              "statements": [
                {
                  "expression": {
                    "id": 28997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 28993,
                      "name": "router",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 28983,
                      "src": "579:6:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_RouterHarness_$29690",
                        "typeString": "contract RouterHarness"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 28995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "588:17:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_RouterHarness_$29690_$",
                          "typeString": "function () returns (contract RouterHarness)"
                        },
                        "typeName": {
                          "id": 28994,
                          "name": "RouterHarness",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 29690,
                          "src": "592:13:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_RouterHarness_$29690",
                            "typeString": "contract RouterHarness"
                          }
                        }
                      },
                      "id": 28996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "588:19:32",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_RouterHarness_$29690",
                        "typeString": "contract RouterHarness"
                      }
                    },
                    "src": "579:28:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_RouterHarness_$29690",
                      "typeString": "contract RouterHarness"
                    }
                  },
                  "id": 28998,
                  "nodeType": "ExpressionStatement",
                  "src": "579:28:32"
                },
                {
                  "assignments": [
                    29000
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 29000,
                      "mutability": "mutable",
                      "name": "xAppConnectionManager",
                      "nodeType": "VariableDeclaration",
                      "scope": 29034,
                      "src": "617:29:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 28999,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "617:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 29008,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 29005,
                            "name": "localDomain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28990,
                            "src": "669:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          ],
                          "id": 29004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "657:11:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$_t_uint32_$returns$_t_contract$_MockXcm_$28979_$",
                            "typeString": "function (uint32) returns (contract MockXcm)"
                          },
                          "typeName": {
                            "id": 29003,
                            "name": "MockXcm",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 28979,
                            "src": "661:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockXcm_$28979",
                              "typeString": "contract MockXcm"
                            }
                          }
                        },
                        "id": 29006,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "657:24:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockXcm_$28979",
                          "typeString": "contract MockXcm"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_MockXcm_$28979",
                          "typeString": "contract MockXcm"
                        }
                      ],
                      "id": 29002,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "649:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 29001,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "649:7:32",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 29007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "649:33:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "617:65:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 29012,
                        "name": "xAppConnectionManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29000,
                        "src": "740:21:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 29009,
                        "name": "router",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28983,
                        "src": "692:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RouterHarness_$29690",
                          "typeString": "contract RouterHarness"
                        }
                      },
                      "id": 29011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "exposed__XAppConnectionClient_initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29649,
                      "src": "692:47:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 29013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "692:70:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29014,
                  "nodeType": "ExpressionStatement",
                  "src": "692:70:32"
                },
                {
                  "expression": {
                    "id": 29017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 29015,
                      "name": "testDomain",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 28985,
                      "src": "772:10:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "313233323133",
                      "id": 29016,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "785:6:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_123213_by_1",
                        "typeString": "int_const 123213"
                      },
                      "value": "123213"
                    },
                    "src": "772:19:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "id": 29018,
                  "nodeType": "ExpressionStatement",
                  "src": "772:19:32"
                },
                {
                  "expression": {
                    "id": 29021,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 29019,
                      "name": "testRouter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 28987,
                      "src": "801:10:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "726f757465722061646472657373",
                      "id": 29020,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "814:16:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_2ce718dd49f15a0fcb42d7008fd614de7ae53171ec60d8822f2c68465ea13bc9",
                        "typeString": "literal_string \"router address\""
                      },
                      "value": "router address"
                    },
                    "src": "801:29:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 29022,
                  "nodeType": "ExpressionStatement",
                  "src": "801:29:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 29026,
                            "name": "testDomain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28985,
                            "src": "917:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          ],
                          "expression": {
                            "id": 29024,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28983,
                            "src": "902:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_RouterHarness_$29690",
                              "typeString": "contract RouterHarness"
                            }
                          },
                          "id": 29025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "remotes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28743,
                          "src": "902:14:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_bytes32_$",
                            "typeString": "function (uint32) view external returns (bytes32)"
                          }
                        },
                        "id": 29027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "902:26:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 29030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "938:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 29029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "930:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 29028,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "930:7:32",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 29031,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "930:10:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 29023,
                      "name": "assertEq",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3136,
                        3161,
                        3174,
                        3190,
                        3232,
                        3274,
                        3316,
                        3353,
                        3390,
                        3427,
                        320,
                        345,
                        375,
                        400,
                        459,
                        484,
                        514,
                        539,
                        1639,
                        1674
                      ],
                      "referencedDeclaration": 375,
                      "src": "893:8:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 29032,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "893:48:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29033,
                  "nodeType": "ExpressionStatement",
                  "src": "893:48:32"
                }
              ]
            },
            "functionSelector": "0a9254e4",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setUp",
            "parameters": {
              "id": 28991,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "519:2:32"
            },
            "returnParameters": {
              "id": 28992,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "529:0:32"
            },
            "scope": 29339,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 29073,
            "nodeType": "FunctionDefinition",
            "src": "954:306:32",
            "body": {
              "id": 29072,
              "nodeType": "Block",
              "src": "996:264:32",
              "statements": [
                {
                  "assignments": [
                    29039
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 29039,
                      "mutability": "mutable",
                      "name": "newDomain",
                      "nodeType": "VariableDeclaration",
                      "scope": 29072,
                      "src": "1006:16:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 29038,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1006:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 29041,
                  "initialValue": {
                    "hexValue": "3132",
                    "id": 29040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1025:2:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_12_by_1",
                      "typeString": "int_const 12"
                    },
                    "value": "12"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1006:21:32"
                },
                {
                  "assignments": [
                    29043
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 29043,
                      "mutability": "mutable",
                      "name": "newRouter",
                      "nodeType": "VariableDeclaration",
                      "scope": 29072,
                      "src": "1037:17:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 29042,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1037:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 29045,
                  "initialValue": {
                    "hexValue": "307842454546",
                    "id": 29044,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1057:8:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_dcb455995f85c647ee08644c1b4270bf2e76bdba6dc3ac02197adf19df52b3c5",
                      "typeString": "literal_string \"0xBEEF\""
                    },
                    "value": "0xBEEF"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1037:28:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 29049,
                            "name": "newDomain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29039,
                            "src": "1099:9:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          ],
                          "expression": {
                            "id": 29047,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28983,
                            "src": "1084:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_RouterHarness_$29690",
                              "typeString": "contract RouterHarness"
                            }
                          },
                          "id": 29048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "remotes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28743,
                          "src": "1084:14:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_bytes32_$",
                            "typeString": "function (uint32) view external returns (bytes32)"
                          }
                        },
                        "id": 29050,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1084:25:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 29053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1119:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 29052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1111:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 29051,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "1111:7:32",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 29054,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1111:10:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 29046,
                      "name": "assertEq",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3136,
                        3161,
                        3174,
                        3190,
                        3232,
                        3274,
                        3316,
                        3353,
                        3390,
                        3427,
                        320,
                        345,
                        375,
                        400,
                        459,
                        484,
                        514,
                        539,
                        1639,
                        1674
                      ],
                      "referencedDeclaration": 375,
                      "src": "1075:8:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 29055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1075:47:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29056,
                  "nodeType": "ExpressionStatement",
                  "src": "1075:47:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 29060,
                            "name": "newDomain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29039,
                            "src": "1174:9:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          {
                            "id": 29061,
                            "name": "newRouter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29043,
                            "src": "1185:9:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 29058,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28983,
                            "src": "1144:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_RouterHarness_$29690",
                              "typeString": "contract RouterHarness"
                            }
                          },
                          "id": 29059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "exposed_isRemoteRouter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 29676,
                          "src": "1144:29:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint32_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (uint32,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 29062,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1144:51:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 29057,
                      "name": "assertFalse",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3086,
                        3100
                      ],
                      "referencedDeclaration": 3086,
                      "src": "1132:11:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 29063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1132:64:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29064,
                  "nodeType": "ExpressionStatement",
                  "src": "1132:64:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 29068,
                        "name": "newDomain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29039,
                        "src": "1232:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 29069,
                        "name": "newRouter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29043,
                        "src": "1243:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 29065,
                        "name": "router",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28983,
                        "src": "1206:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RouterHarness_$29690",
                          "typeString": "contract RouterHarness"
                        }
                      },
                      "id": 29067,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enrollRemoteRouter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28793,
                      "src": "1206:25:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_bytes32_$returns$__$",
                        "typeString": "function (uint32,bytes32) external"
                      }
                    },
                    "id": 29070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1206:47:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29071,
                  "nodeType": "ExpressionStatement",
                  "src": "1206:47:32"
                }
              ]
            },
            "functionSelector": "0ec27ca0",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_enrollRemoteRouter",
            "parameters": {
              "id": 29036,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "986:2:32"
            },
            "returnParameters": {
              "id": 29037,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "996:0:32"
            },
            "scope": 29339,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 29123,
            "nodeType": "FunctionDefinition",
            "src": "1266:424:32",
            "body": {
              "id": 29122,
              "nodeType": "Block",
              "src": "1361:329:32",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 29086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "id": 29082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 29080,
                        "name": "newDomain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29075,
                        "src": "1375:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "id": 29081,
                        "name": "localDomain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28990,
                        "src": "1388:11:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "src": "1375:24:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "id": 29085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 29083,
                        "name": "newDomain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29075,
                        "src": "1403:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 29084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1416:1:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "1403:14:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1375:42:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 29113,
                    "nodeType": "Block",
                    "src": "1476:151:32",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 29097,
                                  "name": "newDomain",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29075,
                                  "src": "1515:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                ],
                                "expression": {
                                  "id": 29095,
                                  "name": "router",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28983,
                                  "src": "1500:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_RouterHarness_$29690",
                                    "typeString": "contract RouterHarness"
                                  }
                                },
                                "id": 29096,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "remotes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28743,
                                "src": "1500:14:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_bytes32_$",
                                  "typeString": "function (uint32) view external returns (bytes32)"
                                }
                              },
                              "id": 29098,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1500:25:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 29101,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1535:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 29100,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1527:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 29099,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1527:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 29102,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1527:10:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 29094,
                            "name": "assertEq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3136,
                              3161,
                              3174,
                              3190,
                              3232,
                              3274,
                              3316,
                              3353,
                              3390,
                              3427,
                              320,
                              345,
                              375,
                              400,
                              459,
                              484,
                              514,
                              539,
                              1639,
                              1674
                            ],
                            "referencedDeclaration": 375,
                            "src": "1491:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32)"
                            }
                          },
                          "id": 29103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1491:47:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29104,
                        "nodeType": "ExpressionStatement",
                        "src": "1491:47:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 29108,
                                  "name": "newDomain",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29075,
                                  "src": "1594:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                {
                                  "id": 29109,
                                  "name": "newRouter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29077,
                                  "src": "1605:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 29106,
                                  "name": "router",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28983,
                                  "src": "1564:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_RouterHarness_$29690",
                                    "typeString": "contract RouterHarness"
                                  }
                                },
                                "id": 29107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "exposed_isRemoteRouter",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 29676,
                                "src": "1564:29:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint32_$_t_bytes32_$returns$_t_bool_$",
                                  "typeString": "function (uint32,bytes32) view external returns (bool)"
                                }
                              },
                              "id": 29110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1564:51:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 29105,
                            "name": "assertFalse",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3086,
                              3100
                            ],
                            "referencedDeclaration": 3086,
                            "src": "1552:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                              "typeString": "function (bool)"
                            }
                          },
                          "id": 29111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1552:64:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29112,
                        "nodeType": "ExpressionStatement",
                        "src": "1552:64:32"
                      }
                    ]
                  },
                  "id": 29114,
                  "nodeType": "IfStatement",
                  "src": "1371:256:32",
                  "trueBody": {
                    "id": 29093,
                    "nodeType": "Block",
                    "src": "1419:51:32",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "21646f6d61696e",
                              "id": 29090,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1449:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_713a62ac7d6699d26c5564c3c29686998f05bfd595516cfcf220240bfe0fc1a7",
                                "typeString": "literal_string \"!domain\""
                              },
                              "value": "!domain"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_713a62ac7d6699d26c5564c3c29686998f05bfd595516cfcf220240bfe0fc1a7",
                                "typeString": "literal_string \"!domain\""
                              }
                            ],
                            "expression": {
                              "id": 29087,
                              "name": "vm",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1816,
                              "src": "1433:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Vm_$6909",
                                "typeString": "contract Vm"
                              }
                            },
                            "id": 29089,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "expectRevert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6481,
                            "src": "1433:15:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) external"
                            }
                          },
                          "id": 29091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1433:26:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29092,
                        "nodeType": "ExpressionStatement",
                        "src": "1433:26:32"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 29118,
                        "name": "newDomain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29075,
                        "src": "1662:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 29119,
                        "name": "newRouter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29077,
                        "src": "1673:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 29115,
                        "name": "router",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28983,
                        "src": "1636:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RouterHarness_$29690",
                          "typeString": "contract RouterHarness"
                        }
                      },
                      "id": 29117,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enrollRemoteRouter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28793,
                      "src": "1636:25:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_bytes32_$returns$__$",
                        "typeString": "function (uint32,bytes32) external"
                      }
                    },
                    "id": 29120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1636:47:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29121,
                  "nodeType": "ExpressionStatement",
                  "src": "1636:47:32"
                }
              ]
            },
            "functionSelector": "d32636e3",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_enrollRemoteRouterFuzzed",
            "parameters": {
              "id": 29078,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29075,
                  "mutability": "mutable",
                  "name": "newDomain",
                  "nodeType": "VariableDeclaration",
                  "scope": 29123,
                  "src": "1305:16:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 29074,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1305:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 29077,
                  "mutability": "mutable",
                  "name": "newRouter",
                  "nodeType": "VariableDeclaration",
                  "scope": 29123,
                  "src": "1323:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 29076,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1323:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1304:37:32"
            },
            "returnParameters": {
              "id": 29079,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1361:0:32"
            },
            "scope": 29339,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 29149,
            "nodeType": "FunctionDefinition",
            "src": "1696:222:32",
            "body": {
              "id": 29148,
              "nodeType": "Block",
              "src": "1747:171:32",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "31323331323331323331",
                            "id": 29131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1779:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1231231231_by_1",
                              "typeString": "int_const 1231231231"
                            },
                            "value": "1231231231"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1231231231_by_1",
                              "typeString": "int_const 1231231231"
                            }
                          ],
                          "expression": {
                            "id": 29129,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1816,
                            "src": "1771:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 29130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "addr",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6287,
                          "src": "1771:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_address_$",
                            "typeString": "function (uint256) external returns (address)"
                          }
                        },
                        "id": 29132,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1771:19:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 29126,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "1757:2:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 29128,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startPrank",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6445,
                      "src": "1757:13:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 29133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1757:34:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29134,
                  "nodeType": "ExpressionStatement",
                  "src": "1757:34:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "id": 29138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1817:34:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                          "typeString": "literal_string \"Ownable: caller is not the owner\""
                        },
                        "value": "Ownable: caller is not the owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                          "typeString": "literal_string \"Ownable: caller is not the owner\""
                        }
                      ],
                      "expression": {
                        "id": 29135,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "1801:2:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 29137,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "1801:15:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 29139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1801:51:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29140,
                  "nodeType": "ExpressionStatement",
                  "src": "1801:51:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 29144,
                        "name": "testDomain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28985,
                        "src": "1888:10:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 29145,
                        "name": "testRouter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28987,
                        "src": "1900:10:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 29141,
                        "name": "router",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28983,
                        "src": "1862:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RouterHarness_$29690",
                          "typeString": "contract RouterHarness"
                        }
                      },
                      "id": 29143,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enrollRemoteRouter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28793,
                      "src": "1862:25:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_bytes32_$returns$__$",
                        "typeString": "function (uint32,bytes32) external"
                      }
                    },
                    "id": 29146,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1862:49:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29147,
                  "nodeType": "ExpressionStatement",
                  "src": "1862:49:32"
                }
              ]
            },
            "functionSelector": "c2a76e2a",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_enrollRemoteRouterOnlyOwner",
            "parameters": {
              "id": 29124,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1737:2:32"
            },
            "returnParameters": {
              "id": 29125,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1747:0:32"
            },
            "scope": 29339,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 29187,
            "nodeType": "FunctionDefinition",
            "src": "1924:277:32",
            "body": {
              "id": 29186,
              "nodeType": "Block",
              "src": "1993:208:32",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 29164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 29157,
                          "name": "user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 29151,
                          "src": "2013:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 29160,
                                  "name": "router",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28983,
                                  "src": "2029:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_RouterHarness_$29690",
                                    "typeString": "contract RouterHarness"
                                  }
                                },
                                "id": 29161,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 23099,
                                "src": "2029:12:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 29162,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2029:14:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29159,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2021:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 29158,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2021:7:32",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 29163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2021:23:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2013:31:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "id": 29154,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "2003:2:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 29156,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "assume",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6585,
                      "src": "2003:9:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool) external"
                      }
                    },
                    "id": 29165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2003:42:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29166,
                  "nodeType": "ExpressionStatement",
                  "src": "2003:42:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 29170,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29151,
                        "src": "2069:4:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 29167,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "2055:2:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 29169,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startPrank",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6445,
                      "src": "2055:13:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 29171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2055:19:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29172,
                  "nodeType": "ExpressionStatement",
                  "src": "2055:19:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "id": 29176,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2100:34:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                          "typeString": "literal_string \"Ownable: caller is not the owner\""
                        },
                        "value": "Ownable: caller is not the owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                          "typeString": "literal_string \"Ownable: caller is not the owner\""
                        }
                      ],
                      "expression": {
                        "id": 29173,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "2084:2:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 29175,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "2084:15:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 29177,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2084:51:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29178,
                  "nodeType": "ExpressionStatement",
                  "src": "2084:51:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 29182,
                        "name": "testDomain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28985,
                        "src": "2171:10:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 29183,
                        "name": "testRouter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28987,
                        "src": "2183:10:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 29179,
                        "name": "router",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28983,
                        "src": "2145:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RouterHarness_$29690",
                          "typeString": "contract RouterHarness"
                        }
                      },
                      "id": 29181,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enrollRemoteRouter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28793,
                      "src": "2145:25:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_bytes32_$returns$__$",
                        "typeString": "function (uint32,bytes32) external"
                      }
                    },
                    "id": 29184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2145:49:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29185,
                  "nodeType": "ExpressionStatement",
                  "src": "2145:49:32"
                }
              ]
            },
            "functionSelector": "9ae7ca2e",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_enrollRemoteRouterOnlyOwnerFuzzed",
            "parameters": {
              "id": 29152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29151,
                  "mutability": "mutable",
                  "name": "user",
                  "nodeType": "VariableDeclaration",
                  "scope": 29187,
                  "src": "1972:12:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 29150,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1972:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1971:14:32"
            },
            "returnParameters": {
              "id": 29153,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1993:0:32"
            },
            "scope": 29339,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 29245,
            "nodeType": "FunctionDefinition",
            "src": "2207:450:32",
            "body": {
              "id": 29244,
              "nodeType": "Block",
              "src": "2245:412:32",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 29193,
                        "name": "testDomain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28985,
                        "src": "2281:10:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 29194,
                        "name": "testRouter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28987,
                        "src": "2293:10:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 29190,
                        "name": "router",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28983,
                        "src": "2255:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RouterHarness_$29690",
                          "typeString": "contract RouterHarness"
                        }
                      },
                      "id": 29192,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enrollRemoteRouter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28793,
                      "src": "2255:25:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_bytes32_$returns$__$",
                        "typeString": "function (uint32,bytes32) external"
                      }
                    },
                    "id": 29195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2255:49:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29196,
                  "nodeType": "ExpressionStatement",
                  "src": "2255:49:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 29200,
                            "name": "testDomain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28985,
                            "src": "2351:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          {
                            "id": 29201,
                            "name": "testRouter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28987,
                            "src": "2363:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 29198,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28983,
                            "src": "2321:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_RouterHarness_$29690",
                              "typeString": "contract RouterHarness"
                            }
                          },
                          "id": 29199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "exposed_isRemoteRouter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 29676,
                          "src": "2321:29:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint32_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (uint32,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 29202,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2321:53:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 29197,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -3,
                      "src": "2314:6:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 29203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2314:61:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29204,
                  "nodeType": "ExpressionStatement",
                  "src": "2314:61:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 29214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2392:47:32",
                        "subExpression": {
                          "arguments": [
                            {
                              "hexValue": "333433",
                              "id": 29208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2423:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_343_by_1",
                                "typeString": "int_const 343"
                              },
                              "value": "343"
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 29211,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2436:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 29210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2428:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 29209,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2428:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 29212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2428:10:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_343_by_1",
                                "typeString": "int_const 343"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 29206,
                              "name": "router",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28983,
                              "src": "2393:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_RouterHarness_$29690",
                                "typeString": "contract RouterHarness"
                              }
                            },
                            "id": 29207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "exposed_isRemoteRouter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 29676,
                            "src": "2393:29:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint32_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (uint32,bytes32) view external returns (bool)"
                            }
                          },
                          "id": 29213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2393:46:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 29205,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -3,
                      "src": "2385:6:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 29215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2385:55:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29216,
                  "nodeType": "ExpressionStatement",
                  "src": "2385:55:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 29223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2457:47:32",
                        "subExpression": {
                          "arguments": [
                            {
                              "hexValue": "333433",
                              "id": 29220,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2488:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_343_by_1",
                                "typeString": "int_const 343"
                              },
                              "value": "343"
                            },
                            {
                              "id": 29221,
                              "name": "testRouter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28987,
                              "src": "2493:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_343_by_1",
                                "typeString": "int_const 343"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 29218,
                              "name": "router",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28983,
                              "src": "2458:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_RouterHarness_$29690",
                                "typeString": "contract RouterHarness"
                              }
                            },
                            "id": 29219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "exposed_isRemoteRouter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 29676,
                            "src": "2458:29:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint32_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (uint32,bytes32) view external returns (bool)"
                            }
                          },
                          "id": 29222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2458:46:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 29217,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -3,
                      "src": "2450:6:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 29224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2450:55:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29225,
                  "nodeType": "ExpressionStatement",
                  "src": "2450:55:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 29232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2522:58:32",
                        "subExpression": {
                          "arguments": [
                            {
                              "id": 29229,
                              "name": "testDomain",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28985,
                              "src": "2553:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "hexValue": "6e6f74206120726f75746572",
                              "id": 29230,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2565:14:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ddec5bfc4007ee17e88cf9d7a4cc8a4a34368bd1df9110384c584f8ee1d91b15",
                                "typeString": "literal_string \"not a router\""
                              },
                              "value": "not a router"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ddec5bfc4007ee17e88cf9d7a4cc8a4a34368bd1df9110384c584f8ee1d91b15",
                                "typeString": "literal_string \"not a router\""
                              }
                            ],
                            "expression": {
                              "id": 29227,
                              "name": "router",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28983,
                              "src": "2523:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_RouterHarness_$29690",
                                "typeString": "contract RouterHarness"
                              }
                            },
                            "id": 29228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "exposed_isRemoteRouter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 29676,
                            "src": "2523:29:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint32_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (uint32,bytes32) view external returns (bool)"
                            }
                          },
                          "id": 29231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2523:57:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 29226,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -3,
                      "src": "2515:6:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 29233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2515:66:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29234,
                  "nodeType": "ExpressionStatement",
                  "src": "2515:66:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 29241,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2598:51:32",
                        "subExpression": {
                          "arguments": [
                            {
                              "hexValue": "333433",
                              "id": 29238,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2629:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_343_by_1",
                                "typeString": "int_const 343"
                              },
                              "value": "343"
                            },
                            {
                              "hexValue": "6e6f74206120726f75746572",
                              "id": 29239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2634:14:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ddec5bfc4007ee17e88cf9d7a4cc8a4a34368bd1df9110384c584f8ee1d91b15",
                                "typeString": "literal_string \"not a router\""
                              },
                              "value": "not a router"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_343_by_1",
                                "typeString": "int_const 343"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ddec5bfc4007ee17e88cf9d7a4cc8a4a34368bd1df9110384c584f8ee1d91b15",
                                "typeString": "literal_string \"not a router\""
                              }
                            ],
                            "expression": {
                              "id": 29236,
                              "name": "router",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28983,
                              "src": "2599:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_RouterHarness_$29690",
                                "typeString": "contract RouterHarness"
                              }
                            },
                            "id": 29237,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "exposed_isRemoteRouter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 29676,
                            "src": "2599:29:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint32_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (uint32,bytes32) view external returns (bool)"
                            }
                          },
                          "id": 29240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2599:50:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 29235,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -3,
                      "src": "2591:6:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 29242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2591:59:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29243,
                  "nodeType": "ExpressionStatement",
                  "src": "2591:59:32"
                }
              ]
            },
            "functionSelector": "8aa39949",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_isRemoteRouter",
            "parameters": {
              "id": 29188,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2235:2:32"
            },
            "returnParameters": {
              "id": 29189,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2245:0:32"
            },
            "scope": 29339,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 29261,
            "nodeType": "FunctionDefinition",
            "src": "2663:174:32",
            "body": {
              "id": 29260,
              "nodeType": "Block",
              "src": "2755:82:32",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 29255,
                            "name": "domain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29247,
                            "src": "2807:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          {
                            "id": 29256,
                            "name": "routerAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29249,
                            "src": "2815:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 29253,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28983,
                            "src": "2777:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_RouterHarness_$29690",
                              "typeString": "contract RouterHarness"
                            }
                          },
                          "id": 29254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "exposed_isRemoteRouter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 29676,
                          "src": "2777:29:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint32_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (uint32,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 29257,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2777:52:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 29252,
                      "name": "assertFalse",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3086,
                        3100
                      ],
                      "referencedDeclaration": 3086,
                      "src": "2765:11:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 29258,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2765:65:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29259,
                  "nodeType": "ExpressionStatement",
                  "src": "2765:65:32"
                }
              ]
            },
            "functionSelector": "b8a979c6",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_isRemoteRouterFuzzed",
            "parameters": {
              "id": 29250,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29247,
                  "mutability": "mutable",
                  "name": "domain",
                  "nodeType": "VariableDeclaration",
                  "scope": 29261,
                  "src": "2698:13:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 29246,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2698:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 29249,
                  "mutability": "mutable",
                  "name": "routerAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 29261,
                  "src": "2713:21:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 29248,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2713:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2697:38:32"
            },
            "returnParameters": {
              "id": 29251,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2755:0:32"
            },
            "scope": 29339,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 29320,
            "nodeType": "FunctionDefinition",
            "src": "2843:428:32",
            "body": {
              "id": 29319,
              "nodeType": "Block",
              "src": "2881:390:32",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 29267,
                        "name": "testDomain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28985,
                        "src": "2917:10:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 29268,
                        "name": "testRouter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28987,
                        "src": "2929:10:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 29264,
                        "name": "router",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28983,
                        "src": "2891:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RouterHarness_$29690",
                          "typeString": "contract RouterHarness"
                        }
                      },
                      "id": 29266,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enrollRemoteRouter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28793,
                      "src": "2891:25:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$_t_bytes32_$returns$__$",
                        "typeString": "function (uint32,bytes32) external"
                      }
                    },
                    "id": 29269,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2891:49:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29270,
                  "nodeType": "ExpressionStatement",
                  "src": "2891:49:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 29274,
                            "name": "testDomain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28985,
                            "src": "2989:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          ],
                          "expression": {
                            "id": 29272,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28983,
                            "src": "2959:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_RouterHarness_$29690",
                              "typeString": "contract RouterHarness"
                            }
                          },
                          "id": 29273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "exposed_mustHaveRemote",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 29661,
                          "src": "2959:29:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_bytes32_$",
                            "typeString": "function (uint32) view external returns (bytes32)"
                          }
                        },
                        "id": 29275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2959:41:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 29276,
                        "name": "testRouter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28987,
                        "src": "3002:10:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 29271,
                      "name": "assertEq",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3136,
                        3161,
                        3174,
                        3190,
                        3232,
                        3274,
                        3316,
                        3353,
                        3390,
                        3427,
                        320,
                        345,
                        375,
                        400,
                        459,
                        484,
                        514,
                        539,
                        1639,
                        1674
                      ],
                      "referencedDeclaration": 375,
                      "src": "2950:8:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 29277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2950:63:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29278,
                  "nodeType": "ExpressionStatement",
                  "src": "2950:63:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "2172656d6f7465",
                        "id": 29282,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3039:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b4cb45e2eca7e91596896d9d6d0088e023ee382fb860b627f6924eb294dd23de",
                          "typeString": "literal_string \"!remote\""
                        },
                        "value": "!remote"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_b4cb45e2eca7e91596896d9d6d0088e023ee382fb860b627f6924eb294dd23de",
                          "typeString": "literal_string \"!remote\""
                        }
                      ],
                      "expression": {
                        "id": 29279,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "3023:2:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 29281,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "3023:15:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 29283,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3023:26:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29284,
                  "nodeType": "ExpressionStatement",
                  "src": "3023:26:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "333433",
                        "id": 29288,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3089:3:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_343_by_1",
                          "typeString": "int_const 343"
                        },
                        "value": "343"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_343_by_1",
                          "typeString": "int_const 343"
                        }
                      ],
                      "expression": {
                        "id": 29285,
                        "name": "router",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28983,
                        "src": "3059:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RouterHarness_$29690",
                          "typeString": "contract RouterHarness"
                        }
                      },
                      "id": 29287,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "exposed_mustHaveRemote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29661,
                      "src": "3059:29:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_bytes32_$",
                        "typeString": "function (uint32) view external returns (bytes32)"
                      }
                    },
                    "id": 29289,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3059:34:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 29290,
                  "nodeType": "ExpressionStatement",
                  "src": "3059:34:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "2172656d6f7465",
                        "id": 29294,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3119:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b4cb45e2eca7e91596896d9d6d0088e023ee382fb860b627f6924eb294dd23de",
                          "typeString": "literal_string \"!remote\""
                        },
                        "value": "!remote"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_b4cb45e2eca7e91596896d9d6d0088e023ee382fb860b627f6924eb294dd23de",
                          "typeString": "literal_string \"!remote\""
                        }
                      ],
                      "expression": {
                        "id": 29291,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "3103:2:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 29293,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "3103:15:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 29295,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3103:26:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29296,
                  "nodeType": "ExpressionStatement",
                  "src": "3103:26:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "30",
                        "id": 29300,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3169:1:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "id": 29297,
                        "name": "router",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28983,
                        "src": "3139:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RouterHarness_$29690",
                          "typeString": "contract RouterHarness"
                        }
                      },
                      "id": 29299,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "exposed_mustHaveRemote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29661,
                      "src": "3139:29:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_bytes32_$",
                        "typeString": "function (uint32) view external returns (bytes32)"
                      }
                    },
                    "id": 29301,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3139:32:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 29302,
                  "nodeType": "ExpressionStatement",
                  "src": "3139:32:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "2172656d6f7465",
                        "id": 29306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3197:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b4cb45e2eca7e91596896d9d6d0088e023ee382fb860b627f6924eb294dd23de",
                          "typeString": "literal_string \"!remote\""
                        },
                        "value": "!remote"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_b4cb45e2eca7e91596896d9d6d0088e023ee382fb860b627f6924eb294dd23de",
                          "typeString": "literal_string \"!remote\""
                        }
                      ],
                      "expression": {
                        "id": 29303,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "3181:2:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 29305,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "3181:15:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 29307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3181:26:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29308,
                  "nodeType": "ExpressionStatement",
                  "src": "3181:26:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 29314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3252:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint32_$",
                                "typeString": "type(uint32)"
                              },
                              "typeName": {
                                "id": 29313,
                                "name": "uint32",
                                "nodeType": "ElementaryTypeName",
                                "src": "3252:6:32",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_uint32_$",
                                "typeString": "type(uint32)"
                              }
                            ],
                            "id": 29312,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -27,
                            "src": "3247:4:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 29315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3247:12:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_uint32",
                            "typeString": "type(uint32)"
                          }
                        },
                        "id": 29316,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "max",
                        "nodeType": "MemberAccess",
                        "src": "3247:16:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "expression": {
                        "id": 29309,
                        "name": "router",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28983,
                        "src": "3217:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RouterHarness_$29690",
                          "typeString": "contract RouterHarness"
                        }
                      },
                      "id": 29311,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "exposed_mustHaveRemote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29661,
                      "src": "3217:29:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_bytes32_$",
                        "typeString": "function (uint32) view external returns (bytes32)"
                      }
                    },
                    "id": 29317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3217:47:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 29318,
                  "nodeType": "ExpressionStatement",
                  "src": "3217:47:32"
                }
              ]
            },
            "functionSelector": "034faeab",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_mustHaveRemote",
            "parameters": {
              "id": 29262,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2871:2:32"
            },
            "returnParameters": {
              "id": 29263,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2881:0:32"
            },
            "scope": 29339,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 29338,
            "nodeType": "FunctionDefinition",
            "src": "3277:147:32",
            "body": {
              "id": 29337,
              "nodeType": "Block",
              "src": "3334:90:32",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "2172656d6f7465",
                        "id": 29328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3360:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b4cb45e2eca7e91596896d9d6d0088e023ee382fb860b627f6924eb294dd23de",
                          "typeString": "literal_string \"!remote\""
                        },
                        "value": "!remote"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_b4cb45e2eca7e91596896d9d6d0088e023ee382fb860b627f6924eb294dd23de",
                          "typeString": "literal_string \"!remote\""
                        }
                      ],
                      "expression": {
                        "id": 29325,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "3344:2:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 29327,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "3344:15:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 29329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3344:26:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 29330,
                  "nodeType": "ExpressionStatement",
                  "src": "3344:26:32"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 29334,
                        "name": "domain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29322,
                        "src": "3410:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "expression": {
                        "id": 29331,
                        "name": "router",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28983,
                        "src": "3380:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RouterHarness_$29690",
                          "typeString": "contract RouterHarness"
                        }
                      },
                      "id": 29333,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "exposed_mustHaveRemote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29661,
                      "src": "3380:29:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint32_$returns$_t_bytes32_$",
                        "typeString": "function (uint32) view external returns (bytes32)"
                      }
                    },
                    "id": 29335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3380:37:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 29336,
                  "nodeType": "ExpressionStatement",
                  "src": "3380:37:32"
                }
              ]
            },
            "functionSelector": "c50e1df0",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_mustHaveRemoteFuzzed",
            "parameters": {
              "id": 29323,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29322,
                  "mutability": "mutable",
                  "name": "domain",
                  "nodeType": "VariableDeclaration",
                  "scope": 29338,
                  "src": "3312:13:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 29321,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3312:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3311:15:32"
            },
            "returnParameters": {
              "id": 29324,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3334:0:32"
            },
            "scope": 29339,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 28980,
              "name": "Test",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4902,
              "src": "379:4:32",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Test_$4902",
                "typeString": "contract Test"
              }
            },
            "id": 28981,
            "nodeType": "InheritanceSpecifier",
            "src": "379:4:32"
          }
        ],
        "contractDependencies": [
          1786,
          2021,
          4902,
          28979,
          29690
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          29339,
          4902,
          2021,
          1786
        ],
        "name": "RouterTest",
        "scope": 29340
      }
    ],
    "license": "MIT OR Apache-2.0"
  },
  "id": 32
}