{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint8",
          "name": "decimals",
          "type": "uint8"
        }
      ],
      "name": "UpdateDetails",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "log_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "log_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "log_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "name": "log_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "val",
          "type": "address"
        }
      ],
      "name": "log_named_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "val",
          "type": "bytes"
        }
      ],
      "name": "log_named_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "val",
          "type": "bytes32"
        }
      ],
      "name": "log_named_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        }
      ],
      "name": "log_named_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "val",
          "type": "string"
        }
      ],
      "name": "log_named_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        }
      ],
      "name": "log_named_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "log_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "logs",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "IS_SCRIPT",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "IS_TEST",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "failed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setUp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_burnOnlyOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_domainSeperator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_mintOnlyOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_permitRevertsBadDeadline",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_permitRevertsBadNonce",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_permitRevertsOnReplay",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_permitRevertsPastDeadline",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_permitSuccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_renounceOwnershipNoOp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_setDailtsFailSecondTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "decimals",
          "type": "uint8"
        }
      ],
      "name": "test_setDetailsHashAndSetDetails",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_setDetailsHashOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_transferOwnershipOnlyOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vm",
      "outputs": [
        {
          "internalType": "contract Vm",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60806040526000805462ff00001960ff19909116600117166201000017905534801561002a57600080fd5b50616ea58061003a6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80637e1a2df2116100d8578063ba414fa61161008c578063ea6c845811610066578063ea6c845814610375578063f8ccbf471461037d578063fa7626d41461038557610177565b8063ba414fa614610349578063bec385ec14610365578063e9893f6a1461036d57610177565b806383d0734d116100bd57806383d0734d146103315780638f8e55c314610339578063ad65e1941461034157610177565b80637e1a2df21461032157806382190d051461032957610177565b80633a7684631161012f57806355dae67d1161011457806355dae67d146103095780635d4640ed146103115780636c25a6a31461031957610177565b80633a768463146102d05780634e100e881461030157610177565b80631cef33e2116101605780631cef33e2146102b85780631e2fc4f7146102c05780631f2ba143146102c857610177565b80630a9254e41461017c5780631215a6f414610186575b600080fd5b61018461038d565b005b6101846004803603606081101561019c57600080fd5b8101906020810181356401000000008111156101b757600080fd5b8201836020820111156101c957600080fd5b803590602001918460018302840111640100000000831117156101eb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561023e57600080fd5b82018360208201111561025057600080fd5b8035906020019184600183028401116401000000008311171561027257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff1691506104679050565b61018461135f565b6101846117c0565b610184611975565b6102d8611aa3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610184611abb565b610184611de6565b61018461221d565b610184612461565b610184612567565b610184612733565b610184612b96565b610184612e65565b61018461333c565b610351613779565b604080519115158252519081900360200190f35b6101846139ab565b610184613bf8565b610184613e4a565b610351614124565b610351614133565b60405161039990614746565b604051809103906000f0801580156103b5573d6000803e3d6000fd5b50600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790819055604080517f8129fc1c00000000000000000000000000000000000000000000000000000000815290519190921691638129fc1c91600480830192600092919082900301818387803b15801561044d57600080fd5b505af1158015610461573d6000803e3d6000fd5b50505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56260ff83161515806104925750835115155b8061049d5750845115155b6040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b1580156104d557600080fd5b505af11580156104e9573d6000803e3d6000fd5b505050506000835184845185856040516020018086815260200185805190602001908083835b6020831061054c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161050f565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790529201868152855190830192860191508083835b602083106105d457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610597565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905260f89590951b7fff0000000000000000000000000000000000000000000000000000000000000016920191825250604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181526001808401808452825192909601919091206008547f654935f4000000000000000000000000000000000000000000000000000000009096526021604585015260606005850152606584018290527f6100000000000000000000000000000000000000000000000000000000000000608585015260a0602585015260a58401919091527f620000000000000000000000000000000000000000000000000000000000000060c5840152905190985073ffffffffffffffffffffffffffffffffffffffff909316965063654935f4955060e580820195506000945090839003019050818387803b15801561075757600080fd5b505af115801561076b573d6000803e3d6000fd5b5050604080518082018252600181527f610000000000000000000000000000000000000000000000000000000000000060209091015260085481517f06fdde0300000000000000000000000000000000000000000000000000000000815291517f3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb945073ffffffffffffffffffffffffffffffffffffffff90911692506306fdde0391600480820192600092909190829003018186803b15801561082e57600080fd5b505afa158015610842573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561088957600080fd5b81019080805160405193929190846401000000008211156108a957600080fd5b9083019060208201858111156108be57600080fd5b82516401000000008111828201881017156108d857600080fd5b82525081516020918201929091019080838360005b838110156109055781810151838201526020016108ed565b50505050905090810190601f1680156109325780820380516001836020036101000a031916815260200191505b50604052505050805190602001201461094a57600080fd5b604080518082018252600181527f620000000000000000000000000000000000000000000000000000000000000060209091015260085481517f95d89b4100000000000000000000000000000000000000000000000000000000815291517fb5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c55109273ffffffffffffffffffffffffffffffffffffffff909216916395d89b41916004808301926000929190829003018186803b158015610a0857600080fd5b505afa158015610a1c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526020811015610a6357600080fd5b8101908080516040519392919084640100000000821115610a8357600080fd5b908301906020820185811115610a9857600080fd5b8251640100000000811182820188101715610ab257600080fd5b82525081516020918201929091019080838360005b83811015610adf578181015183820152602001610ac7565b50505050905090810190601f168015610b0c5780820380516001836020036101000a031916815260200191505b506040525050508051906020012014610b2457600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8c57600080fd5b505afa158015610ba0573d6000803e3d6000fd5b505050506040513d6020811015610bb657600080fd5b505160ff16602114610bc757600080fd5b600854604080517fcc2ab7c700000000000000000000000000000000000000000000000000000000815260048101849052905173ffffffffffffffffffffffffffffffffffffffff9092169163cc2ab7c79160248082019260009290919082900301818387803b158015610c3a57600080fd5b505af1158015610c4e573d6000803e3d6000fd5b5050604080517f491cc7c20000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201526000606482018190529151737109709ecfa91a80626ff3989d68f67f5b1dd12d945063491cc7c293506084808301939282900301818387803b158015610cd157600080fd5b505af1158015610ce5573d6000803e3d6000fd5b505050508160ff16836040518082805190602001908083835b60208310610d3b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610cfe565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930181900381208a519095508a945090928392508401908083835b60208310610dd057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d93565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990911692169190911790526040519201829003822093507f96848da8c41ae282b5ec5c04f45fc469a8186bb78de70419275c2c402fcc27b192506000919050a46008546040517f654935f400000000000000000000000000000000000000000000000000000000815260ff8416604482015260606004820190815286516064830152865173ffffffffffffffffffffffffffffffffffffffff9093169263654935f4928892889288928291602482019160840190602088019080838360005b83811015610ed8578181015183820152602001610ec0565b50505050905090810190601f168015610f055780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610f38578181015183820152602001610f20565b50505050905090810190601f168015610f655780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610f8757600080fd5b505af1158015610f9b573d6000803e3d6000fd5b505050508380519060200120600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561106a57600080fd5b810190808051604051939291908464010000000082111561108a57600080fd5b90830190602082018581111561109f57600080fd5b82516401000000008111828201881017156110b957600080fd5b82525081516020918201929091019080838360005b838110156110e65781810151838201526020016110ce565b50505050905090810190601f1680156111135780820380516001836020036101000a031916815260200191505b50604052505050805190602001201461112b57600080fd5b82516020840120600854604080517f95d89b41000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216916395d89b4191600480820192600092909190829003018186803b15801561119d57600080fd5b505afa1580156111b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156111f857600080fd5b810190808051604051939291908464010000000082111561121857600080fd5b90830190602082018581111561122d57600080fd5b825164010000000081118282018810171561124757600080fd5b82525081516020918201929091019080838360005b8381101561127457818101518382015260200161125c565b50505050905090810190601f1680156112a15780820380516001836020036101000a031916815260200191505b5060405250505080519060200120146112b957600080fd5b600854604080517f313ce567000000000000000000000000000000000000000000000000000000008152905160ff85169273ffffffffffffffffffffffffffffffffffffffff169163313ce567916004808301926020929190829003018186803b15801561132657600080fd5b505afa15801561133a573d6000803e3d6000fd5b505050506040513d602081101561135057600080fd5b505160ff161461046157600080fd5b604080517fffa18649000000000000000000000000000000000000000000000000000000008152607b600482018190529151600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ffa186499160248082019260209290919082900301818787803b1580156113d157600080fd5b505af11580156113e5573d6000803e3d6000fd5b505050506040513d60208110156113fb57600080fd5b5051600854604080517ff698da25000000000000000000000000000000000000000000000000000000008152905192935061beef9260009283928392737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e341eaa4928a9273ffffffffffffffffffffffffffffffffffffffff9092169163f698da2591600480820192602092909190829003018186803b15801561149457600080fd5b505afa1580156114a8573d6000803e3d6000fd5b505050506040513d60208110156114be57600080fd5b81019080805190602001909291905050507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98989670de0b6b3a7640000600042604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004018083815260200182815260200192505050606060405180830381600087803b15801561160557600080fd5b505af1158015611619573d6000803e3d6000fd5b505050506040513d606081101561162f57600080fd5b50805160208083015160409384015184517ff28dceb30000000000000000000000000000000000000000000000000000000081526004810193909352601e60248401527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604484015293519296509450919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391606480830192600092919082900301818387803b1580156116de57600080fd5b505af11580156116f2573d6000803e3d6000fd5b5050600854604080517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528981166024830152670de0b6b3a7640000604483015242600101606483015260ff8916608483015260a4820188905260c48201879052915191909216935063d505accf925060e480830192600092919082900301818387803b1580156117a057600080fd5b505af11580156117b4573d6000803e3d6000fd5b50505050505050505050565b600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815261beef6004820152670de0b6b3a76400006024820152905173ffffffffffffffffffffffffffffffffffffffff909216916340c10f199160448082019260009290919082900301818387803b15801561184257600080fd5b505af1158015611856573d6000803e3d6000fd5b505050506118ff600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118c557600080fd5b505afa1580156118d9573d6000803e3d6000fd5b505050506040513d60208110156118ef57600080fd5b5051670de0b6b3a764000061413c565b600854604080517f70a0823100000000000000000000000000000000000000000000000000000000815261beef600482015290516119739273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156118c557600080fd5b565b600854604080517ff2fde38b00000000000000000000000000000000000000000000000000000000815261beef600482018190529151919273ffffffffffffffffffffffffffffffffffffffff169163f2fde38b9160248082019260009290919082900301818387803b1580156119eb57600080fd5b505af11580156119ff573d6000803e3d6000fd5b50505050611aa0600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a6e57600080fd5b505afa158015611a82573d6000803e3d6000fd5b505050506040513d6020811015611a9857600080fd5b505182614263565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d81565b600854604080517f654935f400000000000000000000000000000000000000000000000000000000815260016044820152606060048201526000606482018190526080602483015260848201819052915173ffffffffffffffffffffffffffffffffffffffff9093169263654935f49260a48084019391929182900301818387803b158015611b4957600080fd5b505af1158015611b5d573d6000803e3d6000fd5b5050604080518082018252600781527f4e756d656e6f720000000000000000000000000000000000000000000000000060208083019190915282518084018452600281527f4e4d0000000000000000000000000000000000000000000000000000000000008183015283517ff28dceb30000000000000000000000000000000000000000000000000000000081526004810192909252601260248301527f21636f6d6d69747465642064657461696c73000000000000000000000000000060448301529251919450919250601391737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb39160648082019260009290919082900301818387803b158015611c6857600080fd5b505af1158015611c7c573d6000803e3d6000fd5b50506008546040517f654935f400000000000000000000000000000000000000000000000000000000815260ff8516604482015260606004820190815287516064830152875173ffffffffffffffffffffffffffffffffffffffff909316945063654935f493508792879287929182916024810191608490910190602088019080838360005b83811015611d1a578181015183820152602001611d02565b50505050905090810190601f168015611d475780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611d7a578181015183820152602001611d62565b50505050905090810190601f168015611da75780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611dc957600080fd5b505af1158015611ddd573d6000803e3d6000fd5b50505050505050565b604080517fffa18649000000000000000000000000000000000000000000000000000000008152607b600482018190529151600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ffa186499160248082019260209290919082900301818787803b158015611e5857600080fd5b505af1158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600854604080517ff698da25000000000000000000000000000000000000000000000000000000008152905192935061beef9260009283928392737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e341eaa4928a9273ffffffffffffffffffffffffffffffffffffffff9092169163f698da2591600480820192602092909190829003018186803b158015611f1b57600080fd5b505afa158015611f2f573d6000803e3d6000fd5b505050506040513d6020811015611f4557600080fd5b5051604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960208083019190915273ffffffffffffffffffffffffffffffffffffffff8c8116838501528b16606080840191909152670de0b6b3a76400006080840152600160a08401524260c0808501919091528451808503909101815260e080850186528151918401919091207f190100000000000000000000000000000000000000000000000000000000000061010086015261010285019690965261012280850196909652845180850390960186526101428401808652865196909301959095209487901b7fffffffff00000000000000000000000000000000000000000000000000000000169091526101468201949094526101668101929092525161018680830193928290030181600087803b15801561208557600080fd5b505af1158015612099573d6000803e3d6000fd5b505050506040513d60608110156120af57600080fd5b50805160208083015160409384015184517ff28dceb30000000000000000000000000000000000000000000000000000000081526004810193909352601e60248401527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604484015293519296509450919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391606480830192600092919082900301818387803b15801561215e57600080fd5b505af1158015612172573d6000803e3d6000fd5b5050600854604080517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528981166024830152670de0b6b3a7640000604483015242606483015260ff8916608483015260a4820188905260c48201879052915191909216935063d505accf925060e480830192600092919082900301818387803b1580156117a057600080fd5b604080517f06447d5600000000000000000000000000000000000000000000000000000000815261beef600482018190529151737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d5691602480830192600092919082900301818387803b15801561228c57600080fd5b505af11580156122a0573d6000803e3d6000fd5b5050604080517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250606480830192600092919082900301818387803b15801561233d57600080fd5b505af1158015612351573d6000803e3d6000fd5b5050600854604080517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152915191909216935063f2fde38b9250602480830192600092919082900301818387803b1580156123c957600080fd5b505af11580156123dd573d6000803e3d6000fd5b5050604080517f90c5013b0000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d93506390c5013b9250600480830192600092919082900301818387803b15801561244657600080fd5b505af115801561245a573d6000803e3d6000fd5b5050505050565b600854604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638da5cb5b916004808301926020929190829003018186803b1580156124cc57600080fd5b505afa1580156124e0573d6000803e3d6000fd5b505050506040513d60208110156124f657600080fd5b5051600854604080517f715018a6000000000000000000000000000000000000000000000000000000008152905192935073ffffffffffffffffffffffffffffffffffffffff9091169163715018a69160048082019260009290919082900301818387803b1580156119eb57600080fd5b604080517fca669fa700000000000000000000000000000000000000000000000000000000815261beef600482015290517f686173680000000000000000000000000000000000000000000000000000000091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79160248082019260009290919082900301818387803b1580156125f757600080fd5b505af115801561260b573d6000803e3d6000fd5b5050604080517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250606480830192600092919082900301818387803b1580156126a857600080fd5b505af11580156126bc573d6000803e3d6000fd5b5050600854604080517fcc2ab7c700000000000000000000000000000000000000000000000000000000815260048101869052905173ffffffffffffffffffffffffffffffffffffffff909216935063cc2ab7c7925060248082019260009290919082900301818387803b15801561244657600080fd5b604080517fffa18649000000000000000000000000000000000000000000000000000000008152607b600482018190529151600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ffa186499160248082019260209290919082900301818787803b1580156127a557600080fd5b505af11580156127b9573d6000803e3d6000fd5b505050506040513d60208110156127cf57600080fd5b5051600854604080517ff698da25000000000000000000000000000000000000000000000000000000008152905192935061beef9260009283928392737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e341eaa4928a9273ffffffffffffffffffffffffffffffffffffffff9092169163f698da2591600480820192602092909190829003018186803b15801561286857600080fd5b505afa15801561287c573d6000803e3d6000fd5b505050506040513d602081101561289257600080fd5b81019080805190602001909291905050507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98989670de0b6b3a7640000600060014203604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004018083815260200182815260200192505050606060405180830381600087803b1580156129dc57600080fd5b505af11580156129f0573d6000803e3d6000fd5b505050506040513d6060811015612a0657600080fd5b50805160208083015160409384015184517ff28dceb30000000000000000000000000000000000000000000000000000000081526004810193909352601d60248401527f45524332305065726d69743a206578706972656420646561646c696e65000000604484015293519296509450919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391606480830192600092919082900301818387803b158015612ab557600080fd5b505af1158015612ac9573d6000803e3d6000fd5b5050600854604080517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528981166024830152670de0b6b3a764000060448301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4201606483015260ff8916608483015260a4820188905260c48201879052915191909216935063d505accf925060e480830192600092919082900301818387803b1580156117a057600080fd5b600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815261beef6004820152670de0b6b3a76400006024820152905173ffffffffffffffffffffffffffffffffffffffff909216916340c10f199160448082019260009290919082900301818387803b158015612c1857600080fd5b505af1158015612c2c573d6000803e3d6000fd5b5050604080517f06447d5600000000000000000000000000000000000000000000000000000000815261beef60048201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d93506306447d569250602480830192600092919082900301818387803b158015612c9d57600080fd5b505af1158015612cb1573d6000803e3d6000fd5b5050604080517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250606480830192600092919082900301818387803b158015612d4e57600080fd5b505af1158015612d62573d6000803e3d6000fd5b5050600854604080517f9dc29fac00000000000000000000000000000000000000000000000000000000815261beef6004820152670c7d713b49da00006024820152905173ffffffffffffffffffffffffffffffffffffffff9092169350639dc29fac925060448082019260009290919082900301818387803b158015612de857600080fd5b505af1158015612dfc573d6000803e3d6000fd5b5050604080517f90c5013b0000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d93506390c5013b9250600480830192600092919082900301818387803b15801561044d57600080fd5b604080517fffa18649000000000000000000000000000000000000000000000000000000008152607b600482018190529151600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ffa186499160248082019260209290919082900301818787803b158015612ed757600080fd5b505af1158015612eeb573d6000803e3d6000fd5b505050506040513d6020811015612f0157600080fd5b5051600854604080517ff698da25000000000000000000000000000000000000000000000000000000008152905192935061beef9260009283928392737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e341eaa4928a9273ffffffffffffffffffffffffffffffffffffffff9092169163f698da2591600480820192602092909190829003018186803b158015612f9a57600080fd5b505afa158015612fae573d6000803e3d6000fd5b505050506040513d6020811015612fc457600080fd5b81019080805190602001909291905050507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98989670de0b6b3a7640000600042604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004018083815260200182815260200192505050606060405180830381600087803b15801561310b57600080fd5b505af115801561311f573d6000803e3d6000fd5b505050506040513d606081101561313557600080fd5b508051602082015160409283015160085484517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a81166024830152670de0b6b3a7640000604483015242606483015260ff8616608483015260a4820185905260c482018490529551949850929650909450929092169163d505accf9160e480830192600092919082900301818387803b1580156131f157600080fd5b505af1158015613205573d6000803e3d6000fd5b5050600854604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015289811660248301529151613289955091909216925063dd62ed3e91604480820192602092909190829003018186803b1580156118c557600080fd5b600854604080517f7ecebe0000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529151613334939290921691637ecebe0091602480820192602092909190829003018186803b15801561330157600080fd5b505afa158015613315573d6000803e3d6000fd5b505050506040513d602081101561332b57600080fd5b5051600161413c565b505050505050565b604080517fffa18649000000000000000000000000000000000000000000000000000000008152607b600482018190529151600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ffa186499160248082019260209290919082900301818787803b1580156133ae57600080fd5b505af11580156133c2573d6000803e3d6000fd5b505050506040513d60208110156133d857600080fd5b5051600854604080517ff698da25000000000000000000000000000000000000000000000000000000008152905192935061beef9260009283928392737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e341eaa4928a9273ffffffffffffffffffffffffffffffffffffffff9092169163f698da2591600480820192602092909190829003018186803b15801561347157600080fd5b505afa158015613485573d6000803e3d6000fd5b505050506040513d602081101561349b57600080fd5b81019080805190602001909291905050507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98989670de0b6b3a7640000600042604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004018083815260200182815260200192505050606060405180830381600087803b1580156135e257600080fd5b505af11580156135f6573d6000803e3d6000fd5b505050506040513d606081101561360c57600080fd5b508051602082015160409283015160085484517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a81166024830152670de0b6b3a7640000604483015242606483015260ff8616608483015260a4820185905260c482018490529551949850929650909450929092169163d505accf9160e480830192600092919082900301818387803b1580156136c857600080fd5b505af11580156136dc573d6000803e3d6000fd5b5050604080517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250606480830192600092919082900301818387803b15801561215e57600080fd5b60008054610100900460ff161561379b5750600054610100900460ff166139a8565b60006137a56143e0565b156139a55760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d60208083018290527f6661696c6564000000000000000000000000000000000000000000000000000083850152835180840385018152606084019094527f667f9d700000000000000000000000000000000000000000000000000000000060808401908152845160009593947f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49493608490910191908401908083835b6020831061389d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613860565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831061391f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016138e2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613981576040519150601f19603f3d011682016040523d82523d6000602084013e613986565b606091505b5091505080806020019051602081101561399f57600080fd5b50519150505b90505b90565b600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815261beef6004820152670de0b6b3a76400006024820152905173ffffffffffffffffffffffffffffffffffffffff909216916340c10f199160448082019260009290919082900301818387803b158015613a2d57600080fd5b505af1158015613a41573d6000803e3d6000fd5b5050600854604080517f9dc29fac00000000000000000000000000000000000000000000000000000000815261beef6004820152670c7d713b49da00006024820152905173ffffffffffffffffffffffffffffffffffffffff9092169350639dc29fac925060448082019260009290919082900301818387803b158015613ac757600080fd5b505af1158015613adb573d6000803e3d6000fd5b50505050613b84600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015613b4a57600080fd5b505afa158015613b5e573d6000803e3d6000fd5b505050506040513d6020811015613b7457600080fd5b505167016345785d8a000061413c565b600854604080517f70a0823100000000000000000000000000000000000000000000000000000000815261beef600482015290516119739273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015613b4a57600080fd5b600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815261beef6004820152670de0b6b3a76400006024820152905173ffffffffffffffffffffffffffffffffffffffff909216916340c10f199160448082019260009290919082900301818387803b158015613c7a57600080fd5b505af1158015613c8e573d6000803e3d6000fd5b5050604080517f06447d5600000000000000000000000000000000000000000000000000000000815261beef60048201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d93506306447d569250602480830192600092919082900301818387803b158015613cff57600080fd5b505af1158015613d13573d6000803e3d6000fd5b5050604080517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250606480830192600092919082900301818387803b158015613db057600080fd5b505af1158015613dc4573d6000803e3d6000fd5b5050600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815261beef6004820152670de0b6b3a76400006024820152905173ffffffffffffffffffffffffffffffffffffffff90921693506340c10f19925060448082019260009290919082900301818387803b158015612de857600080fd5b600046905060007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015613eda57600080fd5b505afa158015613eee573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526020811015613f3557600080fd5b8101908080516040519392919084640100000000821115613f5557600080fd5b908301906020820185811115613f6a57600080fd5b8251640100000000811182820188101715613f8457600080fd5b82525081516020918201929091019080838360005b83811015613fb1578181015183820152602001613f99565b50505050905090810190601f168015613fde5780820380516001836020036101000a031916815260200191505b50604081815285516020968701208282018252600183527f310000000000000000000000000000000000000000000000000000000000000092870192909252600854815180880198909852878201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608801526080870189905273ffffffffffffffffffffffffffffffffffffffff90911660a08088018290528251808903909101815260c088018084528151918801919091207ff698da2500000000000000000000000000000000000000000000000000000000909152915191975061412096889691955063f698da25945060c4808201945091929190829003018186803b1580156140ef57600080fd5b505afa158015614103573d6000803e3d6000fd5b505050506040513d602081101561411957600080fd5b50516143fb565b5050565b60005462010000900460ff1681565b60005460ff1681565b808214614120577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405180806020018281038252602281526020018062006e2d6022913960400191505060405180910390a16040805160208101839052818152600a818301527f2020457870656374656400000000000000000000000000000000000000000000606082015290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16040805160208101849052818152600a818301527f2020202041637475616c00000000000000000000000000000000000000000000606082015290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a161412061451e565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614614120577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405180806020018281038252602581526020018062006e746025913960400191505060405180910390a16040805173ffffffffffffffffffffffffffffffffffffffff83166020820152818152600a818301527f2020457870656374656400000000000000000000000000000000000000000000606082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a16040805173ffffffffffffffffffffffffffffffffffffffff84166020820152818152600a818301527f2020202041637475616c00000000000000000000000000000000000000000000606082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a161412061451e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b151590565b808214614120577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405180806020018281038252602581526020018062006e4f6025913960400191505060405180910390a16040805160208101839052818152600a818301527f2020457870656374656400000000000000000000000000000000000000000000606082015290517fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f999181900360800190a16040805160208101849052818152600a818301527f2020202041637475616c00000000000000000000000000000000000000000000606082015290517fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f999181900360800190a16141205b6145266143e0565b156147185760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d60208083018290527f6661696c6564000000000000000000000000000000000000000000000000000083850152600160608481019190915284518085039091018152608084019094527f70ca10bb0000000000000000000000000000000000000000000000000000000060a08401908152845160009593947f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc4949360a490910191908401908083835b6020831061462a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016145ed565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083106146ac57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161466f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461470e576040519150601f19603f3d011682016040523d82523d6000602084013e614713565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b6126d880620047558339019056fe7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9608052610120604052600160e052603160f81b610100527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660a05261190160f01b60c05234801561007057600080fd5b5060805160a05160c05160f01c6126336100a56000398061124f525080611584525080610ecf52806111eb52506126336000f3fe6080604052600436106101a15760003560e01c80638da5cb5b116100e1578063cc2ab7c71161008a578063dd62ed3e11610064578063dd62ed3e14610722578063f2fde38b1461076a578063f698da25146107aa578063ffa1ad74146107bf576101a1565b8063cc2ab7c714610685578063d0e30db0146106af578063d505accf146106b7576101a1565b80639dc29fac116100bb5780639dc29fac146105b3578063a457c2d7146105f9578063a9059cbb1461063f576101a1565b80638da5cb5b1461054b57806395d89b4114610589578063982aaf6b1461059e576101a1565b806340c10f191161014e57806370a082311161012857806370a08231146104a1578063715018a6146104e15780637ecebe00146104f65780638129fc1c14610536576101a1565b806340c10f19146103725780634815fcb1146103ba578063654935f4146103cf576101a1565b806323b872dd1161017f57806323b872dd146102b1578063313ce56714610301578063395093511461032c576101a1565b806306fdde03146101a6578063095ea7b31461023057806318160ddd1461028a575b600080fd5b3480156101b257600080fd5b506101bb6107d4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f55781810151838201526020016101dd565b50505050905090810190601f1680156102225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023c57600080fd5b506102766004803603604081101561025357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610888565b604080519115158252519081900360200190f35b34801561029657600080fd5b5061029f61089e565b60408051918252519081900360200190f35b3480156102bd57600080fd5b50610276600480360360608110156102d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356108a4565b34801561030d57600080fd5b5061031661091a565b6040805160ff9092168252519081900360200190f35b34801561033857600080fd5b506102766004803603604081101561034f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610923565b34801561037e57600080fd5b506103b86004803603604081101561039557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610966565b005b3480156103c657600080fd5b5061029f610a1c565b3480156103db57600080fd5b506103b8600480360360608110156103f257600080fd5b81019060208101813564010000000081111561040d57600080fd5b82018360208201111561041f57600080fd5b8035906020019184600183028401116401000000008311171561044157600080fd5b91939092909160208101903564010000000081111561045f57600080fd5b82018360208201111561047157600080fd5b8035906020019184600183028401116401000000008311171561049357600080fd5b91935091503560ff16610a22565b3480156104ad57600080fd5b5061029f600480360360208110156104c457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c49565b3480156104ed57600080fd5b506103b8610c5a565b34801561050257600080fd5b5061029f6004803603602081101561051957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d04565b34801561054257600080fd5b506103b8610d16565b34801561055757600080fd5b50610560610e32565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561059557600080fd5b506101bb610e4e565b3480156105aa57600080fd5b5061029f610ecd565b3480156105bf57600080fd5b506103b8600480360360408110156105d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610ef1565b34801561060557600080fd5b506102766004803603604081101561061c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fa3565b34801561064b57600080fd5b506102766004803603604081101561066257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fff565b34801561069157600080fd5b506103b8600480360360208110156106a857600080fd5b503561100c565b6103b86110c2565b3480156106c357600080fd5b506103b8600480360360e08110156106da57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356110cc565b34801561072e57600080fd5b5061029f6004803603604081101561074557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166113f9565b34801561077657600080fd5b506103b86004803603602081101561078d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611431565b3480156107b657600080fd5b5061029f6114e2565b3480156107cb57600080fd5b506103166115d8565b60688054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561087e5780601f106108535761010080835404028352916020019161087e565b820191906000526020600020905b81548152906001019060200180831161086157829003601f168201915b5050505050905090565b60006108953384846115dd565b50600192915050565b60675490565b60006108b1848484611724565b610910843361090b856040518060600160405280602881526020016125706028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260666020908152604080832033845290915290205491906118f6565b6115dd565b5060019392505050565b606a5460ff1690565b33600081815260666020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161089591859061090b90866119a7565b61096e611a22565b73ffffffffffffffffffffffffffffffffffffffff1661098c610e32565b73ffffffffffffffffffffffffffffffffffffffff1614610a0e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610a188282611a26565b5050565b606c5481565b60685460009060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001841615020190911604158015610a97575060695460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001841615020190911604155b8015610aa65750606a5460ff16155b90508080610b295750606c54610b2787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b018190048102820181019092528981529250899150889081908401838280828437600092019190915250889250611b59915050565b145b610b9457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f21636f6d6d69747465642064657461696c730000000000000000000000000000604482015290519081900360640190fd5b610ba0606887876123cf565b50610bad606985856123cf565b50606a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff841617905580610c41578160ff168484604051808383808284376040519201829003822094508b93508a92508190508383808284376040519201829003822094507f96848da8c41ae282b5ec5c04f45fc469a8186bb78de70419275c2c402fcc27b193506000925050a45b505050505050565b6000610c5482611c94565b92915050565b610c62611a22565b73ffffffffffffffffffffffffffffffffffffffff16610c80610e32565b73ffffffffffffffffffffffffffffffffffffffff1614610d0257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b565b606b6020526000908152604090205481565b600054610100900460ff1680610d2f5750610d2f611cbc565b80610d3d575060005460ff16155b610d92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612542602e913960400191505060405180910390fd5b600054610100900460ff16158015610df857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610e00611ccd565b8015610e2f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b60335473ffffffffffffffffffffffffffffffffffffffff1690565b60698054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561087e5780601f106108535761010080835404028352916020019161087e565b7f000000000000000000000000000000000000000000000000000000000000000081565b610ef9611a22565b73ffffffffffffffffffffffffffffffffffffffff16610f17610e32565b73ffffffffffffffffffffffffffffffffffffffff1614610f9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610a188282611dbf565b6000610895338461090b856040518060600160405280602581526020016126026025913933600090815260666020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d16845290915290205491906118f6565b6000610895338484611724565b611014611a22565b73ffffffffffffffffffffffffffffffffffffffff16611032610e32565b73ffffffffffffffffffffffffffffffffffffffff16146110b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b80606c5414610e2f57606c55565b610d023334611a26565b8342111561113b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff87166111bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332305065726d69743a206f776e6572207a65726f206164647265737300604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8088166000818152606b602090815260408083205481517f00000000000000000000000000000000000000000000000000000000000000008185015280830195909552948b166060850152608084018a905260a0840185905260c08085018a90528151808603909101815260e090940190528251920191909120907f00000000000000000000000000000000000000000000000000000000000000006112766114e2565b83604051602001808461ffff1660f01b81526002018381526020018281526020019350505050604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611310573d6000803e3d6000fd5b5050506020604051035190508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146113b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8b166000908152606b602052604090206001850190556113ec8b8b8b6115dd565b5050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260666020908152604080832093909416825291909152205490565b611439611a22565b73ffffffffffffffffffffffffffffffffffffffff16611457610e32565b73ffffffffffffffffffffffffffffffffffffffff16146114d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610e2f81611f09565b6000804690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f606860000160405180828054600181600116156101000203166002900480156115695780601f10611547576101008083540402835291820191611569565b820191906000526020600020905b815481529060010190602001808311611555575b505060408051918290038220602080840196909652828201527f0000000000000000000000000000000000000000000000000000000000000000606083015260808201959095523060a0808301919091528551808303909101815260c090910190945250508151910120905090565b600081565b73ffffffffffffffffffffffffffffffffffffffff8316611649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806125de6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124fa6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260666020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806125b96025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166117fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061248f6023913960400191505060405180910390fd5b6118078383836120ab565b6118518160405180606001604052806026815260200161251c6026913973ffffffffffffffffffffffffffffffffffffffff861660009081526065602052604090205491906118f6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260656020526040808220939093559084168152205461188d90826119a7565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526065602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561199f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561196457818101518382015260200161194c565b50505050905090810190601f1680156119915780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611a1b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8216611aa857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611ab4600083836120ab565b606754611ac190826119a7565b60675573ffffffffffffffffffffffffffffffffffffffff8216600090815260656020526040902054611af490826119a7565b73ffffffffffffffffffffffffffffffffffffffff831660008181526065602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000835184845185856040516020018086815260200185805190602001908083835b60208310611bb857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611b7b565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790529201868152855190830192860191508083835b60208310611c4057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611c03565b6001836020036101000a0380198251168184511680821785525050505050509050018260ff1660f81b8152600101955050505050506040516020818303038152906040528051906020012090509392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526065602052604090205490565b6000611cc7306120b0565b15905090565b600054610100900460ff1680611ce65750611ce6611cbc565b80611cf4575060005460ff16155b611d49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612542602e913960400191505060405180910390fd5b600054610100900460ff16158015611daf57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b611db76120b6565b610e006121c8565b73ffffffffffffffffffffffffffffffffffffffff8216611e2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125986021913960400191505060405180910390fd5b611e37826000836120ab565b611e81816040518060600160405280602281526020016124b26022913973ffffffffffffffffffffffffffffffffffffffff851660009081526065602052604090205491906118f6565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260656020526040902055606754611eb49082612358565b60675560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b611f11611a22565b73ffffffffffffffffffffffffffffffffffffffff16611f2f610e32565b73ffffffffffffffffffffffffffffffffffffffff1614611fb157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661201d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806124d46026913960400191505060405180910390fd5b60335460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b505050565b3b151590565b600054610100900460ff16806120cf57506120cf611cbc565b806120dd575060005460ff16155b612132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612542602e913960400191505060405180910390fd5b600054610100900460ff16158015610e0057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790558015610e2f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff16806121e157506121e1611cbc565b806121ef575060005460ff16155b612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612542602e913960400191505060405180910390fd5b600054610100900460ff161580156122aa57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b60006122b4611a22565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610e2f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b6000828211156123c957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826124055760008555612469565b82601f1061243c578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555612469565b82800160010185558215612469579182015b8281111561246957823582559160200191906001019061244e565b50612475929150612479565b5090565b5b80821115612475576000815560010161247a56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e745d4572726f723a2061203d3d2062206e6f7420736174697366696564205b627974657333325d4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464726573735da164736f6c6343000706000a",
    "sourceMap": "147:8894:49:-:0;;;1572:26:0;;;-1:-1:-1;;;;1572:26:0;;;1594:4;1572:26;170:28:1;;;;;147:8894:49;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c80637e1a2df2116100d8578063ba414fa61161008c578063ea6c845811610066578063ea6c845814610375578063f8ccbf471461037d578063fa7626d41461038557610177565b8063ba414fa614610349578063bec385ec14610365578063e9893f6a1461036d57610177565b806383d0734d116100bd57806383d0734d146103315780638f8e55c314610339578063ad65e1941461034157610177565b80637e1a2df21461032157806382190d051461032957610177565b80633a7684631161012f57806355dae67d1161011457806355dae67d146103095780635d4640ed146103115780636c25a6a31461031957610177565b80633a768463146102d05780634e100e881461030157610177565b80631cef33e2116101605780631cef33e2146102b85780631e2fc4f7146102c05780631f2ba143146102c857610177565b80630a9254e41461017c5780631215a6f414610186575b600080fd5b61018461038d565b005b6101846004803603606081101561019c57600080fd5b8101906020810181356401000000008111156101b757600080fd5b8201836020820111156101c957600080fd5b803590602001918460018302840111640100000000831117156101eb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561023e57600080fd5b82018360208201111561025057600080fd5b8035906020019184600183028401116401000000008311171561027257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff1691506104679050565b61018461135f565b6101846117c0565b610184611975565b6102d8611aa3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610184611abb565b610184611de6565b61018461221d565b610184612461565b610184612567565b610184612733565b610184612b96565b610184612e65565b61018461333c565b610351613779565b604080519115158252519081900360200190f35b6101846139ab565b610184613bf8565b610184613e4a565b610351614124565b610351614133565b60405161039990614746565b604051809103906000f0801580156103b5573d6000803e3d6000fd5b50600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790819055604080517f8129fc1c00000000000000000000000000000000000000000000000000000000815290519190921691638129fc1c91600480830192600092919082900301818387803b15801561044d57600080fd5b505af1158015610461573d6000803e3d6000fd5b50505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56260ff83161515806104925750835115155b8061049d5750845115155b6040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b1580156104d557600080fd5b505af11580156104e9573d6000803e3d6000fd5b505050506000835184845185856040516020018086815260200185805190602001908083835b6020831061054c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161050f565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790529201868152855190830192860191508083835b602083106105d457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610597565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905260f89590951b7fff0000000000000000000000000000000000000000000000000000000000000016920191825250604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181526001808401808452825192909601919091206008547f654935f4000000000000000000000000000000000000000000000000000000009096526021604585015260606005850152606584018290527f6100000000000000000000000000000000000000000000000000000000000000608585015260a0602585015260a58401919091527f620000000000000000000000000000000000000000000000000000000000000060c5840152905190985073ffffffffffffffffffffffffffffffffffffffff909316965063654935f4955060e580820195506000945090839003019050818387803b15801561075757600080fd5b505af115801561076b573d6000803e3d6000fd5b5050604080518082018252600181527f610000000000000000000000000000000000000000000000000000000000000060209091015260085481517f06fdde0300000000000000000000000000000000000000000000000000000000815291517f3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb945073ffffffffffffffffffffffffffffffffffffffff90911692506306fdde0391600480820192600092909190829003018186803b15801561082e57600080fd5b505afa158015610842573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561088957600080fd5b81019080805160405193929190846401000000008211156108a957600080fd5b9083019060208201858111156108be57600080fd5b82516401000000008111828201881017156108d857600080fd5b82525081516020918201929091019080838360005b838110156109055781810151838201526020016108ed565b50505050905090810190601f1680156109325780820380516001836020036101000a031916815260200191505b50604052505050805190602001201461094a57600080fd5b604080518082018252600181527f620000000000000000000000000000000000000000000000000000000000000060209091015260085481517f95d89b4100000000000000000000000000000000000000000000000000000000815291517fb5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c55109273ffffffffffffffffffffffffffffffffffffffff909216916395d89b41916004808301926000929190829003018186803b158015610a0857600080fd5b505afa158015610a1c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526020811015610a6357600080fd5b8101908080516040519392919084640100000000821115610a8357600080fd5b908301906020820185811115610a9857600080fd5b8251640100000000811182820188101715610ab257600080fd5b82525081516020918201929091019080838360005b83811015610adf578181015183820152602001610ac7565b50505050905090810190601f168015610b0c5780820380516001836020036101000a031916815260200191505b506040525050508051906020012014610b2457600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8c57600080fd5b505afa158015610ba0573d6000803e3d6000fd5b505050506040513d6020811015610bb657600080fd5b505160ff16602114610bc757600080fd5b600854604080517fcc2ab7c700000000000000000000000000000000000000000000000000000000815260048101849052905173ffffffffffffffffffffffffffffffffffffffff9092169163cc2ab7c79160248082019260009290919082900301818387803b158015610c3a57600080fd5b505af1158015610c4e573d6000803e3d6000fd5b5050604080517f491cc7c20000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201526000606482018190529151737109709ecfa91a80626ff3989d68f67f5b1dd12d945063491cc7c293506084808301939282900301818387803b158015610cd157600080fd5b505af1158015610ce5573d6000803e3d6000fd5b505050508160ff16836040518082805190602001908083835b60208310610d3b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610cfe565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930181900381208a519095508a945090928392508401908083835b60208310610dd057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d93565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990911692169190911790526040519201829003822093507f96848da8c41ae282b5ec5c04f45fc469a8186bb78de70419275c2c402fcc27b192506000919050a46008546040517f654935f400000000000000000000000000000000000000000000000000000000815260ff8416604482015260606004820190815286516064830152865173ffffffffffffffffffffffffffffffffffffffff9093169263654935f4928892889288928291602482019160840190602088019080838360005b83811015610ed8578181015183820152602001610ec0565b50505050905090810190601f168015610f055780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610f38578181015183820152602001610f20565b50505050905090810190601f168015610f655780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610f8757600080fd5b505af1158015610f9b573d6000803e3d6000fd5b505050508380519060200120600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561106a57600080fd5b810190808051604051939291908464010000000082111561108a57600080fd5b90830190602082018581111561109f57600080fd5b82516401000000008111828201881017156110b957600080fd5b82525081516020918201929091019080838360005b838110156110e65781810151838201526020016110ce565b50505050905090810190601f1680156111135780820380516001836020036101000a031916815260200191505b50604052505050805190602001201461112b57600080fd5b82516020840120600854604080517f95d89b41000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216916395d89b4191600480820192600092909190829003018186803b15801561119d57600080fd5b505afa1580156111b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156111f857600080fd5b810190808051604051939291908464010000000082111561121857600080fd5b90830190602082018581111561122d57600080fd5b825164010000000081118282018810171561124757600080fd5b82525081516020918201929091019080838360005b8381101561127457818101518382015260200161125c565b50505050905090810190601f1680156112a15780820380516001836020036101000a031916815260200191505b5060405250505080519060200120146112b957600080fd5b600854604080517f313ce567000000000000000000000000000000000000000000000000000000008152905160ff85169273ffffffffffffffffffffffffffffffffffffffff169163313ce567916004808301926020929190829003018186803b15801561132657600080fd5b505afa15801561133a573d6000803e3d6000fd5b505050506040513d602081101561135057600080fd5b505160ff161461046157600080fd5b604080517fffa18649000000000000000000000000000000000000000000000000000000008152607b600482018190529151600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ffa186499160248082019260209290919082900301818787803b1580156113d157600080fd5b505af11580156113e5573d6000803e3d6000fd5b505050506040513d60208110156113fb57600080fd5b5051600854604080517ff698da25000000000000000000000000000000000000000000000000000000008152905192935061beef9260009283928392737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e341eaa4928a9273ffffffffffffffffffffffffffffffffffffffff9092169163f698da2591600480820192602092909190829003018186803b15801561149457600080fd5b505afa1580156114a8573d6000803e3d6000fd5b505050506040513d60208110156114be57600080fd5b81019080805190602001909291905050507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98989670de0b6b3a7640000600042604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004018083815260200182815260200192505050606060405180830381600087803b15801561160557600080fd5b505af1158015611619573d6000803e3d6000fd5b505050506040513d606081101561162f57600080fd5b50805160208083015160409384015184517ff28dceb30000000000000000000000000000000000000000000000000000000081526004810193909352601e60248401527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604484015293519296509450919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391606480830192600092919082900301818387803b1580156116de57600080fd5b505af11580156116f2573d6000803e3d6000fd5b5050600854604080517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528981166024830152670de0b6b3a7640000604483015242600101606483015260ff8916608483015260a4820188905260c48201879052915191909216935063d505accf925060e480830192600092919082900301818387803b1580156117a057600080fd5b505af11580156117b4573d6000803e3d6000fd5b50505050505050505050565b600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815261beef6004820152670de0b6b3a76400006024820152905173ffffffffffffffffffffffffffffffffffffffff909216916340c10f199160448082019260009290919082900301818387803b15801561184257600080fd5b505af1158015611856573d6000803e3d6000fd5b505050506118ff600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118c557600080fd5b505afa1580156118d9573d6000803e3d6000fd5b505050506040513d60208110156118ef57600080fd5b5051670de0b6b3a764000061413c565b600854604080517f70a0823100000000000000000000000000000000000000000000000000000000815261beef600482015290516119739273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156118c557600080fd5b565b600854604080517ff2fde38b00000000000000000000000000000000000000000000000000000000815261beef600482018190529151919273ffffffffffffffffffffffffffffffffffffffff169163f2fde38b9160248082019260009290919082900301818387803b1580156119eb57600080fd5b505af11580156119ff573d6000803e3d6000fd5b50505050611aa0600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a6e57600080fd5b505afa158015611a82573d6000803e3d6000fd5b505050506040513d6020811015611a9857600080fd5b505182614263565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d81565b600854604080517f654935f400000000000000000000000000000000000000000000000000000000815260016044820152606060048201526000606482018190526080602483015260848201819052915173ffffffffffffffffffffffffffffffffffffffff9093169263654935f49260a48084019391929182900301818387803b158015611b4957600080fd5b505af1158015611b5d573d6000803e3d6000fd5b5050604080518082018252600781527f4e756d656e6f720000000000000000000000000000000000000000000000000060208083019190915282518084018452600281527f4e4d0000000000000000000000000000000000000000000000000000000000008183015283517ff28dceb30000000000000000000000000000000000000000000000000000000081526004810192909252601260248301527f21636f6d6d69747465642064657461696c73000000000000000000000000000060448301529251919450919250601391737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb39160648082019260009290919082900301818387803b158015611c6857600080fd5b505af1158015611c7c573d6000803e3d6000fd5b50506008546040517f654935f400000000000000000000000000000000000000000000000000000000815260ff8516604482015260606004820190815287516064830152875173ffffffffffffffffffffffffffffffffffffffff909316945063654935f493508792879287929182916024810191608490910190602088019080838360005b83811015611d1a578181015183820152602001611d02565b50505050905090810190601f168015611d475780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611d7a578181015183820152602001611d62565b50505050905090810190601f168015611da75780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611dc957600080fd5b505af1158015611ddd573d6000803e3d6000fd5b50505050505050565b604080517fffa18649000000000000000000000000000000000000000000000000000000008152607b600482018190529151600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ffa186499160248082019260209290919082900301818787803b158015611e5857600080fd5b505af1158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600854604080517ff698da25000000000000000000000000000000000000000000000000000000008152905192935061beef9260009283928392737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e341eaa4928a9273ffffffffffffffffffffffffffffffffffffffff9092169163f698da2591600480820192602092909190829003018186803b158015611f1b57600080fd5b505afa158015611f2f573d6000803e3d6000fd5b505050506040513d6020811015611f4557600080fd5b5051604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960208083019190915273ffffffffffffffffffffffffffffffffffffffff8c8116838501528b16606080840191909152670de0b6b3a76400006080840152600160a08401524260c0808501919091528451808503909101815260e080850186528151918401919091207f190100000000000000000000000000000000000000000000000000000000000061010086015261010285019690965261012280850196909652845180850390960186526101428401808652865196909301959095209487901b7fffffffff00000000000000000000000000000000000000000000000000000000169091526101468201949094526101668101929092525161018680830193928290030181600087803b15801561208557600080fd5b505af1158015612099573d6000803e3d6000fd5b505050506040513d60608110156120af57600080fd5b50805160208083015160409384015184517ff28dceb30000000000000000000000000000000000000000000000000000000081526004810193909352601e60248401527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604484015293519296509450919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391606480830192600092919082900301818387803b15801561215e57600080fd5b505af1158015612172573d6000803e3d6000fd5b5050600854604080517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528981166024830152670de0b6b3a7640000604483015242606483015260ff8916608483015260a4820188905260c48201879052915191909216935063d505accf925060e480830192600092919082900301818387803b1580156117a057600080fd5b604080517f06447d5600000000000000000000000000000000000000000000000000000000815261beef600482018190529151737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d5691602480830192600092919082900301818387803b15801561228c57600080fd5b505af11580156122a0573d6000803e3d6000fd5b5050604080517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250606480830192600092919082900301818387803b15801561233d57600080fd5b505af1158015612351573d6000803e3d6000fd5b5050600854604080517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152915191909216935063f2fde38b9250602480830192600092919082900301818387803b1580156123c957600080fd5b505af11580156123dd573d6000803e3d6000fd5b5050604080517f90c5013b0000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d93506390c5013b9250600480830192600092919082900301818387803b15801561244657600080fd5b505af115801561245a573d6000803e3d6000fd5b5050505050565b600854604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638da5cb5b916004808301926020929190829003018186803b1580156124cc57600080fd5b505afa1580156124e0573d6000803e3d6000fd5b505050506040513d60208110156124f657600080fd5b5051600854604080517f715018a6000000000000000000000000000000000000000000000000000000008152905192935073ffffffffffffffffffffffffffffffffffffffff9091169163715018a69160048082019260009290919082900301818387803b1580156119eb57600080fd5b604080517fca669fa700000000000000000000000000000000000000000000000000000000815261beef600482015290517f686173680000000000000000000000000000000000000000000000000000000091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79160248082019260009290919082900301818387803b1580156125f757600080fd5b505af115801561260b573d6000803e3d6000fd5b5050604080517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250606480830192600092919082900301818387803b1580156126a857600080fd5b505af11580156126bc573d6000803e3d6000fd5b5050600854604080517fcc2ab7c700000000000000000000000000000000000000000000000000000000815260048101869052905173ffffffffffffffffffffffffffffffffffffffff909216935063cc2ab7c7925060248082019260009290919082900301818387803b15801561244657600080fd5b604080517fffa18649000000000000000000000000000000000000000000000000000000008152607b600482018190529151600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ffa186499160248082019260209290919082900301818787803b1580156127a557600080fd5b505af11580156127b9573d6000803e3d6000fd5b505050506040513d60208110156127cf57600080fd5b5051600854604080517ff698da25000000000000000000000000000000000000000000000000000000008152905192935061beef9260009283928392737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e341eaa4928a9273ffffffffffffffffffffffffffffffffffffffff9092169163f698da2591600480820192602092909190829003018186803b15801561286857600080fd5b505afa15801561287c573d6000803e3d6000fd5b505050506040513d602081101561289257600080fd5b81019080805190602001909291905050507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98989670de0b6b3a7640000600060014203604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004018083815260200182815260200192505050606060405180830381600087803b1580156129dc57600080fd5b505af11580156129f0573d6000803e3d6000fd5b505050506040513d6060811015612a0657600080fd5b50805160208083015160409384015184517ff28dceb30000000000000000000000000000000000000000000000000000000081526004810193909352601d60248401527f45524332305065726d69743a206578706972656420646561646c696e65000000604484015293519296509450919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391606480830192600092919082900301818387803b158015612ab557600080fd5b505af1158015612ac9573d6000803e3d6000fd5b5050600854604080517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528981166024830152670de0b6b3a764000060448301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4201606483015260ff8916608483015260a4820188905260c48201879052915191909216935063d505accf925060e480830192600092919082900301818387803b1580156117a057600080fd5b600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815261beef6004820152670de0b6b3a76400006024820152905173ffffffffffffffffffffffffffffffffffffffff909216916340c10f199160448082019260009290919082900301818387803b158015612c1857600080fd5b505af1158015612c2c573d6000803e3d6000fd5b5050604080517f06447d5600000000000000000000000000000000000000000000000000000000815261beef60048201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d93506306447d569250602480830192600092919082900301818387803b158015612c9d57600080fd5b505af1158015612cb1573d6000803e3d6000fd5b5050604080517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250606480830192600092919082900301818387803b158015612d4e57600080fd5b505af1158015612d62573d6000803e3d6000fd5b5050600854604080517f9dc29fac00000000000000000000000000000000000000000000000000000000815261beef6004820152670c7d713b49da00006024820152905173ffffffffffffffffffffffffffffffffffffffff9092169350639dc29fac925060448082019260009290919082900301818387803b158015612de857600080fd5b505af1158015612dfc573d6000803e3d6000fd5b5050604080517f90c5013b0000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d93506390c5013b9250600480830192600092919082900301818387803b15801561044d57600080fd5b604080517fffa18649000000000000000000000000000000000000000000000000000000008152607b600482018190529151600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ffa186499160248082019260209290919082900301818787803b158015612ed757600080fd5b505af1158015612eeb573d6000803e3d6000fd5b505050506040513d6020811015612f0157600080fd5b5051600854604080517ff698da25000000000000000000000000000000000000000000000000000000008152905192935061beef9260009283928392737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e341eaa4928a9273ffffffffffffffffffffffffffffffffffffffff9092169163f698da2591600480820192602092909190829003018186803b158015612f9a57600080fd5b505afa158015612fae573d6000803e3d6000fd5b505050506040513d6020811015612fc457600080fd5b81019080805190602001909291905050507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98989670de0b6b3a7640000600042604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004018083815260200182815260200192505050606060405180830381600087803b15801561310b57600080fd5b505af115801561311f573d6000803e3d6000fd5b505050506040513d606081101561313557600080fd5b508051602082015160409283015160085484517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a81166024830152670de0b6b3a7640000604483015242606483015260ff8616608483015260a4820185905260c482018490529551949850929650909450929092169163d505accf9160e480830192600092919082900301818387803b1580156131f157600080fd5b505af1158015613205573d6000803e3d6000fd5b5050600854604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015289811660248301529151613289955091909216925063dd62ed3e91604480820192602092909190829003018186803b1580156118c557600080fd5b600854604080517f7ecebe0000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529151613334939290921691637ecebe0091602480820192602092909190829003018186803b15801561330157600080fd5b505afa158015613315573d6000803e3d6000fd5b505050506040513d602081101561332b57600080fd5b5051600161413c565b505050505050565b604080517fffa18649000000000000000000000000000000000000000000000000000000008152607b600482018190529151600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ffa186499160248082019260209290919082900301818787803b1580156133ae57600080fd5b505af11580156133c2573d6000803e3d6000fd5b505050506040513d60208110156133d857600080fd5b5051600854604080517ff698da25000000000000000000000000000000000000000000000000000000008152905192935061beef9260009283928392737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e341eaa4928a9273ffffffffffffffffffffffffffffffffffffffff9092169163f698da2591600480820192602092909190829003018186803b15801561347157600080fd5b505afa158015613485573d6000803e3d6000fd5b505050506040513d602081101561349b57600080fd5b81019080805190602001909291905050507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98989670de0b6b3a7640000600042604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004018083815260200182815260200192505050606060405180830381600087803b1580156135e257600080fd5b505af11580156135f6573d6000803e3d6000fd5b505050506040513d606081101561360c57600080fd5b508051602082015160409283015160085484517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a81166024830152670de0b6b3a7640000604483015242606483015260ff8616608483015260a4820185905260c482018490529551949850929650909450929092169163d505accf9160e480830192600092919082900301818387803b1580156136c857600080fd5b505af11580156136dc573d6000803e3d6000fd5b5050604080517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250606480830192600092919082900301818387803b15801561215e57600080fd5b60008054610100900460ff161561379b5750600054610100900460ff166139a8565b60006137a56143e0565b156139a55760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d60208083018290527f6661696c6564000000000000000000000000000000000000000000000000000083850152835180840385018152606084019094527f667f9d700000000000000000000000000000000000000000000000000000000060808401908152845160009593947f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49493608490910191908401908083835b6020831061389d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613860565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831061391f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016138e2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613981576040519150601f19603f3d011682016040523d82523d6000602084013e613986565b606091505b5091505080806020019051602081101561399f57600080fd5b50519150505b90505b90565b600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815261beef6004820152670de0b6b3a76400006024820152905173ffffffffffffffffffffffffffffffffffffffff909216916340c10f199160448082019260009290919082900301818387803b158015613a2d57600080fd5b505af1158015613a41573d6000803e3d6000fd5b5050600854604080517f9dc29fac00000000000000000000000000000000000000000000000000000000815261beef6004820152670c7d713b49da00006024820152905173ffffffffffffffffffffffffffffffffffffffff9092169350639dc29fac925060448082019260009290919082900301818387803b158015613ac757600080fd5b505af1158015613adb573d6000803e3d6000fd5b50505050613b84600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015613b4a57600080fd5b505afa158015613b5e573d6000803e3d6000fd5b505050506040513d6020811015613b7457600080fd5b505167016345785d8a000061413c565b600854604080517f70a0823100000000000000000000000000000000000000000000000000000000815261beef600482015290516119739273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015613b4a57600080fd5b600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815261beef6004820152670de0b6b3a76400006024820152905173ffffffffffffffffffffffffffffffffffffffff909216916340c10f199160448082019260009290919082900301818387803b158015613c7a57600080fd5b505af1158015613c8e573d6000803e3d6000fd5b5050604080517f06447d5600000000000000000000000000000000000000000000000000000000815261beef60048201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d93506306447d569250602480830192600092919082900301818387803b158015613cff57600080fd5b505af1158015613d13573d6000803e3d6000fd5b5050604080517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250606480830192600092919082900301818387803b158015613db057600080fd5b505af1158015613dc4573d6000803e3d6000fd5b5050600854604080517f40c10f1900000000000000000000000000000000000000000000000000000000815261beef6004820152670de0b6b3a76400006024820152905173ffffffffffffffffffffffffffffffffffffffff90921693506340c10f19925060448082019260009290919082900301818387803b158015612de857600080fd5b600046905060007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015613eda57600080fd5b505afa158015613eee573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526020811015613f3557600080fd5b8101908080516040519392919084640100000000821115613f5557600080fd5b908301906020820185811115613f6a57600080fd5b8251640100000000811182820188101715613f8457600080fd5b82525081516020918201929091019080838360005b83811015613fb1578181015183820152602001613f99565b50505050905090810190601f168015613fde5780820380516001836020036101000a031916815260200191505b50604081815285516020968701208282018252600183527f310000000000000000000000000000000000000000000000000000000000000092870192909252600854815180880198909852878201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608801526080870189905273ffffffffffffffffffffffffffffffffffffffff90911660a08088018290528251808903909101815260c088018084528151918801919091207ff698da2500000000000000000000000000000000000000000000000000000000909152915191975061412096889691955063f698da25945060c4808201945091929190829003018186803b1580156140ef57600080fd5b505afa158015614103573d6000803e3d6000fd5b505050506040513d602081101561411957600080fd5b50516143fb565b5050565b60005462010000900460ff1681565b60005460ff1681565b808214614120577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405180806020018281038252602281526020018062006e2d6022913960400191505060405180910390a16040805160208101839052818152600a818301527f2020457870656374656400000000000000000000000000000000000000000000606082015290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16040805160208101849052818152600a818301527f2020202041637475616c00000000000000000000000000000000000000000000606082015290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a161412061451e565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614614120577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405180806020018281038252602581526020018062006e746025913960400191505060405180910390a16040805173ffffffffffffffffffffffffffffffffffffffff83166020820152818152600a818301527f2020457870656374656400000000000000000000000000000000000000000000606082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a16040805173ffffffffffffffffffffffffffffffffffffffff84166020820152818152600a818301527f2020202041637475616c00000000000000000000000000000000000000000000606082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a161412061451e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b151590565b808214614120577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405180806020018281038252602581526020018062006e4f6025913960400191505060405180910390a16040805160208101839052818152600a818301527f2020457870656374656400000000000000000000000000000000000000000000606082015290517fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f999181900360800190a16040805160208101849052818152600a818301527f2020202041637475616c00000000000000000000000000000000000000000000606082015290517fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f999181900360800190a16141205b6145266143e0565b156147185760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d60208083018290527f6661696c6564000000000000000000000000000000000000000000000000000083850152600160608481019190915284518085039091018152608084019094527f70ca10bb0000000000000000000000000000000000000000000000000000000060a08401908152845160009593947f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc4949360a490910191908401908083835b6020831061462a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016145ed565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083106146ac57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161466f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461470e576040519150601f19603f3d011682016040523d82523d6000602084013e614713565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b6126d880620047558339019056fe7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9608052610120604052600160e052603160f81b610100527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660a05261190160f01b60c05234801561007057600080fd5b5060805160a05160c05160f01c6126336100a56000398061124f525080611584525080610ecf52806111eb52506126336000f3fe6080604052600436106101a15760003560e01c80638da5cb5b116100e1578063cc2ab7c71161008a578063dd62ed3e11610064578063dd62ed3e14610722578063f2fde38b1461076a578063f698da25146107aa578063ffa1ad74146107bf576101a1565b8063cc2ab7c714610685578063d0e30db0146106af578063d505accf146106b7576101a1565b80639dc29fac116100bb5780639dc29fac146105b3578063a457c2d7146105f9578063a9059cbb1461063f576101a1565b80638da5cb5b1461054b57806395d89b4114610589578063982aaf6b1461059e576101a1565b806340c10f191161014e57806370a082311161012857806370a08231146104a1578063715018a6146104e15780637ecebe00146104f65780638129fc1c14610536576101a1565b806340c10f19146103725780634815fcb1146103ba578063654935f4146103cf576101a1565b806323b872dd1161017f57806323b872dd146102b1578063313ce56714610301578063395093511461032c576101a1565b806306fdde03146101a6578063095ea7b31461023057806318160ddd1461028a575b600080fd5b3480156101b257600080fd5b506101bb6107d4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f55781810151838201526020016101dd565b50505050905090810190601f1680156102225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023c57600080fd5b506102766004803603604081101561025357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610888565b604080519115158252519081900360200190f35b34801561029657600080fd5b5061029f61089e565b60408051918252519081900360200190f35b3480156102bd57600080fd5b50610276600480360360608110156102d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356108a4565b34801561030d57600080fd5b5061031661091a565b6040805160ff9092168252519081900360200190f35b34801561033857600080fd5b506102766004803603604081101561034f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610923565b34801561037e57600080fd5b506103b86004803603604081101561039557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610966565b005b3480156103c657600080fd5b5061029f610a1c565b3480156103db57600080fd5b506103b8600480360360608110156103f257600080fd5b81019060208101813564010000000081111561040d57600080fd5b82018360208201111561041f57600080fd5b8035906020019184600183028401116401000000008311171561044157600080fd5b91939092909160208101903564010000000081111561045f57600080fd5b82018360208201111561047157600080fd5b8035906020019184600183028401116401000000008311171561049357600080fd5b91935091503560ff16610a22565b3480156104ad57600080fd5b5061029f600480360360208110156104c457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c49565b3480156104ed57600080fd5b506103b8610c5a565b34801561050257600080fd5b5061029f6004803603602081101561051957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d04565b34801561054257600080fd5b506103b8610d16565b34801561055757600080fd5b50610560610e32565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561059557600080fd5b506101bb610e4e565b3480156105aa57600080fd5b5061029f610ecd565b3480156105bf57600080fd5b506103b8600480360360408110156105d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610ef1565b34801561060557600080fd5b506102766004803603604081101561061c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fa3565b34801561064b57600080fd5b506102766004803603604081101561066257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fff565b34801561069157600080fd5b506103b8600480360360208110156106a857600080fd5b503561100c565b6103b86110c2565b3480156106c357600080fd5b506103b8600480360360e08110156106da57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356110cc565b34801561072e57600080fd5b5061029f6004803603604081101561074557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166113f9565b34801561077657600080fd5b506103b86004803603602081101561078d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611431565b3480156107b657600080fd5b5061029f6114e2565b3480156107cb57600080fd5b506103166115d8565b60688054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561087e5780601f106108535761010080835404028352916020019161087e565b820191906000526020600020905b81548152906001019060200180831161086157829003601f168201915b5050505050905090565b60006108953384846115dd565b50600192915050565b60675490565b60006108b1848484611724565b610910843361090b856040518060600160405280602881526020016125706028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260666020908152604080832033845290915290205491906118f6565b6115dd565b5060019392505050565b606a5460ff1690565b33600081815260666020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161089591859061090b90866119a7565b61096e611a22565b73ffffffffffffffffffffffffffffffffffffffff1661098c610e32565b73ffffffffffffffffffffffffffffffffffffffff1614610a0e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610a188282611a26565b5050565b606c5481565b60685460009060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001841615020190911604158015610a97575060695460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001841615020190911604155b8015610aa65750606a5460ff16155b90508080610b295750606c54610b2787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b018190048102820181019092528981529250899150889081908401838280828437600092019190915250889250611b59915050565b145b610b9457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f21636f6d6d69747465642064657461696c730000000000000000000000000000604482015290519081900360640190fd5b610ba0606887876123cf565b50610bad606985856123cf565b50606a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff841617905580610c41578160ff168484604051808383808284376040519201829003822094508b93508a92508190508383808284376040519201829003822094507f96848da8c41ae282b5ec5c04f45fc469a8186bb78de70419275c2c402fcc27b193506000925050a45b505050505050565b6000610c5482611c94565b92915050565b610c62611a22565b73ffffffffffffffffffffffffffffffffffffffff16610c80610e32565b73ffffffffffffffffffffffffffffffffffffffff1614610d0257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b565b606b6020526000908152604090205481565b600054610100900460ff1680610d2f5750610d2f611cbc565b80610d3d575060005460ff16155b610d92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612542602e913960400191505060405180910390fd5b600054610100900460ff16158015610df857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610e00611ccd565b8015610e2f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b60335473ffffffffffffffffffffffffffffffffffffffff1690565b60698054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561087e5780601f106108535761010080835404028352916020019161087e565b7f000000000000000000000000000000000000000000000000000000000000000081565b610ef9611a22565b73ffffffffffffffffffffffffffffffffffffffff16610f17610e32565b73ffffffffffffffffffffffffffffffffffffffff1614610f9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610a188282611dbf565b6000610895338461090b856040518060600160405280602581526020016126026025913933600090815260666020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d16845290915290205491906118f6565b6000610895338484611724565b611014611a22565b73ffffffffffffffffffffffffffffffffffffffff16611032610e32565b73ffffffffffffffffffffffffffffffffffffffff16146110b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b80606c5414610e2f57606c55565b610d023334611a26565b8342111561113b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff87166111bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332305065726d69743a206f776e6572207a65726f206164647265737300604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8088166000818152606b602090815260408083205481517f00000000000000000000000000000000000000000000000000000000000000008185015280830195909552948b166060850152608084018a905260a0840185905260c08085018a90528151808603909101815260e090940190528251920191909120907f00000000000000000000000000000000000000000000000000000000000000006112766114e2565b83604051602001808461ffff1660f01b81526002018381526020018281526020019350505050604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611310573d6000803e3d6000fd5b5050506020604051035190508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146113b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8b166000908152606b602052604090206001850190556113ec8b8b8b6115dd565b5050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260666020908152604080832093909416825291909152205490565b611439611a22565b73ffffffffffffffffffffffffffffffffffffffff16611457610e32565b73ffffffffffffffffffffffffffffffffffffffff16146114d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610e2f81611f09565b6000804690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f606860000160405180828054600181600116156101000203166002900480156115695780601f10611547576101008083540402835291820191611569565b820191906000526020600020905b815481529060010190602001808311611555575b505060408051918290038220602080840196909652828201527f0000000000000000000000000000000000000000000000000000000000000000606083015260808201959095523060a0808301919091528551808303909101815260c090910190945250508151910120905090565b600081565b73ffffffffffffffffffffffffffffffffffffffff8316611649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806125de6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124fa6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260666020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806125b96025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166117fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061248f6023913960400191505060405180910390fd5b6118078383836120ab565b6118518160405180606001604052806026815260200161251c6026913973ffffffffffffffffffffffffffffffffffffffff861660009081526065602052604090205491906118f6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260656020526040808220939093559084168152205461188d90826119a7565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526065602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561199f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561196457818101518382015260200161194c565b50505050905090810190601f1680156119915780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611a1b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8216611aa857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611ab4600083836120ab565b606754611ac190826119a7565b60675573ffffffffffffffffffffffffffffffffffffffff8216600090815260656020526040902054611af490826119a7565b73ffffffffffffffffffffffffffffffffffffffff831660008181526065602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000835184845185856040516020018086815260200185805190602001908083835b60208310611bb857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611b7b565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790529201868152855190830192860191508083835b60208310611c4057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611c03565b6001836020036101000a0380198251168184511680821785525050505050509050018260ff1660f81b8152600101955050505050506040516020818303038152906040528051906020012090509392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526065602052604090205490565b6000611cc7306120b0565b15905090565b600054610100900460ff1680611ce65750611ce6611cbc565b80611cf4575060005460ff16155b611d49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612542602e913960400191505060405180910390fd5b600054610100900460ff16158015611daf57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b611db76120b6565b610e006121c8565b73ffffffffffffffffffffffffffffffffffffffff8216611e2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125986021913960400191505060405180910390fd5b611e37826000836120ab565b611e81816040518060600160405280602281526020016124b26022913973ffffffffffffffffffffffffffffffffffffffff851660009081526065602052604090205491906118f6565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260656020526040902055606754611eb49082612358565b60675560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b611f11611a22565b73ffffffffffffffffffffffffffffffffffffffff16611f2f610e32565b73ffffffffffffffffffffffffffffffffffffffff1614611fb157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661201d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806124d46026913960400191505060405180910390fd5b60335460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b505050565b3b151590565b600054610100900460ff16806120cf57506120cf611cbc565b806120dd575060005460ff16155b612132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612542602e913960400191505060405180910390fd5b600054610100900460ff16158015610e0057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790558015610e2f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff16806121e157506121e1611cbc565b806121ef575060005460ff16155b612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612542602e913960400191505060405180910390fd5b600054610100900460ff161580156122aa57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b60006122b4611a22565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610e2f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b6000828211156123c957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826124055760008555612469565b82601f1061243c578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555612469565b82800160010185558215612469579182015b8281111561246957823582559160200191906001019061244e565b50612475929150612479565b5090565b5b80821115612475576000815560010161247a56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e745d4572726f723a2061203d3d2062206e6f7420736174697366696564205b627974657333325d4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464726573735da164736f6c6343000706000a",
    "sourceMap": "147:8894:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;374:91;;;:::i;:::-;;1557:1214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1557:1214:49;;;;;;;;-1:-1:-1;1557:1214:49;;-1:-1:-1;;1557:1214:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1557:1214:49;;-1:-1:-1;;;1557:1214:49;;;;;-1:-1:-1;1557:1214:49;;-1:-1:-1;1557:1214:49:i;5677:886::-;;;:::i;471:181::-;;;:::i;8421:178::-;;;:::i;321:38:1:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2777:294:49;;;:::i;4792:879::-;;;:::i;8605:262::-;;;:::i;8873:166::-;;;:::i;3077:207::-;;;:::i;6569:890::-;;;:::i;1170:257::-;;;:::i;3856:930::-;;;:::i;7465:950::-;;;:::i;1819:584:0:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;919:245:49;;;:::i;658:255::-;;;:::i;3290:560::-;;;:::i;170:28:1:-;;;:::i;1572:26:0:-;;;:::i;374:91:49:-;416:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;408:5:49;:22;;;;;;;;;;;;;440:18;;;;;;;;:5;;;;;:16;;:18;;;;;-1:-1:-1;;440:18:49;;;;;;;-1:-1:-1;440:5:49;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;374:91::o;1557:1214::-;250:64:1;1704:9:49;1727:13;;;;;;:58;;-1:-1:-1;1760:20:49;;:25;;1727:58;:101;;;-1:-1:-1;1805:18:49;;:23;;1727:101;1704:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1848:9;1923:4;1917:18;1953:4;1981:6;1975:20;2013:6;2037:8;1883:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1883:176:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1883:176:49;;;;;;;;;;;;;;;;;1860:209;;;;;;;;;;2110:5;;:30;;;;2137:2;2110:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1860:209;;-1:-1:-1;2110:5:49;;;;;-1:-1:-1;2110:16:49;;-1:-1:-1;2110:30:49;;;;;-1:-1:-1;;;;2110:30:49;;;;;;-1:-1:-1;2110:30:49;-1:-1:-1;2110:5:49;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2202:10:49;;;;;;;;;;;;;;;;;2174:5;;:12;;;;;;;2192:21;;-1:-1:-1;2174:5:49;;;;;-1:-1:-1;2174:10:49;;:12;;;;;-1:-1:-1;;2174:12:49;;;;;;;;:5;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2174:12:49;;;;;;;;;;-1:-1:-1;2174:12:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:30;;;;;;:55;2150:64;;;;;;2278:10;;;;;;;;;;;;;;;;;2248:5;;:14;;;;;;;2268:21;;2248:5;;;;;:12;;:14;;;;;-1:-1:-1;;2248:14:49;;;;;;;:5;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2248:14:49;;;;;;;;;;-1:-1:-1;2248:14:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2232:32;;;;;;:57;2224:66;;;;;;2308:5;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2308:16:49;:22;;2328:2;2308:22;2300:31;;;;;;2390:5;;:23;;;;;;;;;;;;;;:5;;;;;:20;;:23;;;;;:5;;:23;;;;;;;;:5;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2423:38:49;;;;;;2437:4;2423:38;;;;;;;;;;;;;;;;274:37:1;2423:38:49;;;;;;;;250:64:1;;-1:-1:-1;2423:13:49;;-1:-1:-1;2423:38:49;;;;;274:37:1;2423:38:49;;;;;274:37:1;250:64;2423:38:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2504:8;2476:37;;2496:6;2476:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2476:37:49;;-1:-1:-1;2476:37:49;;;;-1:-1:-1;2476:37:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2476:37:49;;-1:-1:-1;;;2476:37:49;-1:-1:-1;2476:37:49;2523:5;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;:5;;;;;:16;;2540:4;;2546:6;;2554:8;;2523:40;;;;;;;;;;;;;;;;:5;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2523:40:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2631:4;2615:22;;;;;;2597:5;;;;;;;;;;;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2597:12:49;;;;;;;;;;-1:-1:-1;2597:12:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2581:30;;;;;;:56;2573:65;;;;;;2692:24;;;;;;2672:5;;:14;;;;;;;;:5;;;;;:12;;:14;;;;;:5;;:14;;;;;;;;:5;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2672:14:49;;;;;;;;;;-1:-1:-1;2672:14:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2656:32;;;;;;:60;2648:69;;;;;;2735:5;;:16;;;;;;;;:28;;;;:5;;;:14;;:16;;;;;;;;;;;;;;:5;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2735:16:49;:28;;;2727:37;;;;;5677:886;5778:12;;;;;;5749:3;5778:12;;;;;;;;5735:11;;250:64:1;;5778:7:49;;:12;;;;;;;;;;;;;;;5735:11;250:64:1;5778:12:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5778:12:49;6014:5;;:23;;;;;;;;5778:12;;-1:-1:-1;5827:6:49;;5800:16;;;;;;250:64:1;;5879:7:49;;5900:3;;5879:7;6014:5;;;;:21;;:23;;;;;5778:12;;6014:23;;;;;;;;:5;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:117;6179:5;6214:8;6252:4;6286:1;6317:15;6094:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6059:321;;;;;;5944:454;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5917:495;;;;;;5879:543;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5879:543:49;;;;;;;;;;;;6432:49;;;;;;;;;;;;;;;;;;;;;;;;5879:543;;-1:-1:-1;5879:543:49;-1:-1:-1;5879:543:49;;-1:-1:-1;250:64:1;;6432:15:49;;:49;;;;;274:37:1;;6432:49:49;;;;;;;274:37:1;250:64;6432:49:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6491:5:49;;:65;;;;;;:5;:65;;;;;;;;;;;;;;6521:4;6491:65;;;;6527:15;6491:5;6527:19;6491:65;;;;;;;;;;;;;;;;;;;;;;;;;:5;;;;;-1:-1:-1;6491:12:49;;-1:-1:-1;6491:65:49;;;;;:5;;:65;;;;;;;:5;;:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5677:886;;;;;;:::o;471:181::-;509:5;;:33;;;;;;528:6;509:33;;;;537:4;509:33;;;;;;:5;;;;;:10;;:33;;;;;:5;;:33;;;;;;;;:5;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;552:35;561:5;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;561:19:49;582:4;552:8;:35::i;:::-;606:5;;:32;;;;;;630:6;606:32;;;;;;597:48;;606:5;;;:15;;:32;;;;;;;;;;;;;;:5;:32;;;;;;;;;;597:48;471:181::o;8421:178::-;8516:5;;:33;;;;;;8499:6;8516:33;;;;;;;;8499:6;;8516:5;;;:23;;:33;;;;;8472:16;;8516:33;;;;;;;;8472:16;8516:5;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8559;8568:5;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8568:13:49;8583:8;8559;:33::i;:::-;8421:178;:::o;321:38:1:-;250:64;321:38;:::o;2777:294:49:-;2834:5;;:27;;;;;;:5;:27;;;;;;;;;:5;:27;;;;;;;;;;;;;;;;;;;:5;;;;;:16;;:27;;;;;:5;;:27;;;;;;:5;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2871:30:49;;;;;;;;;;;;;;;;;;;;2911:27;;;;;;;;;;;;;;;2977:37;;;;;;;;;;;;;;;;;;;;;;;;2871:30;;-1:-1:-1;2911:27:49;;-1:-1:-1;2965:2:49;;250:64:1;;2977:15:49;;:37;;;;;2871:18;;2977:37;;;;;;;;2871:18;250:64:1;2977:37:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3024:5:49;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;:5;;;;;-1:-1:-1;3024:16:49;;-1:-1:-1;3041:4:49;;3047:6;;3055:8;;3024:40;;;;;;;;;;;;;;;;;;;:5;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3024:40:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2777:294;;;:::o;4792:879::-;4890:12;;;;;;4861:3;4890:12;;;;;;;;4847:11;;250:64:1;;4890:7:49;;:12;;;;;;;;;;;;;;;4847:11;250:64:1;4890:12:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4890:12:49;5126:5;;:23;;;;;;;;4890:12;;-1:-1:-1;4939:6:49;;4912:16;;;;;;250:64:1;;4991:7:49;;5012:3;;4991:7;5126:5;;;;:21;;:23;;;;;4890:12;;5126:23;;;;;;;;:5;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5126:23:49;5206:264;;;250:117;5126:23;5206:264;;;;;;;;;;;;;;;;;;;;;;;;;5364:4;5206:264;;;;5398:1;5206:264;;;;5429:15;5206:264;;;;;;;;;;;;;;;;;;;;;;;;5171:321;;;;;;;;;5056:454;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5029:495;;;;;;;;;;4991:543;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5206:264;4991:543;;;;;-1:-1:-1;4991:543:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4991:543:49;;;;;;;;;;;;5544:49;;;;;;;;;;;;;;;;;;;;;;;;4991:543;;-1:-1:-1;4991:543:49;-1:-1:-1;4991:543:49;;-1:-1:-1;250:64:1;;5544:15:49;;:49;;;;;274:37:1;;5544:49:49;;;;;;;274:37:1;250:64;5544:49:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5603:5:49;;:61;;;;;;:5;:61;;;;;;;;;;;;;;5633:4;5603:61;;;;5639:15;5603:61;;;;;;;;;;;;;;;;;;;;;;;;;:5;;;;;-1:-1:-1;5603:12:49;;-1:-1:-1;5603:61:49;;;;;:5;;:61;;;;;;;:5;;:61;;;;;;;;;;8605:262;8709:23;;;;;;8692:6;8709:23;;;;;;;;250:64:1;;8709:13:49;;:23;;;;;8665:16;;8709:23;;;;;;;8665:16;250:64:1;8709:23:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8742:51:49;;;;;;;;;;;;;;;;;;;;;;;;250:64:1;;-1:-1:-1;8742:15:49;;-1:-1:-1;8742:51:49;;;;;274:37:1;;8742:51:49;;;;;;;274:37:1;250:64;8742:51:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8803:5:49;;:33;;;;;;:5;:33;;;;;;;;;:5;;;;;-1:-1:-1;8803:23:49;;-1:-1:-1;8803:33:49;;;;;:5;;:33;;;;;;;:5;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8846:14:49;;;;;;;;250:64:1;;-1:-1:-1;8846:12:49;;-1:-1:-1;8846:14:49;;;;;274:37:1;;8846:14:49;;;;;;;274:37:1;250:64;8846:14:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8605:262;:::o;8873:166::-;8944:5;;:13;;;;;;;;8928;;8944:5;;;:11;;:13;;;;;;;;;;;;;;:5;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8944:13:49;8967:5;;:25;;;;;;;;8944:13;;-1:-1:-1;8967:5:49;;;;;:23;;:25;;;;;:5;;:25;;;;;;;;:5;;:25;;;;;;;;;;3077:207;3158:25;;;;;;3175:6;3158:25;;;;;;3130:18;;250:64:1;;3158:8:49;;:25;;;;;3130:9;;3158:25;;;;;;;;3130:9;250:64:1;3158:25:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3193:51:49;;;;;;;;;;;;;;;;;;;;;;;;250:64:1;;-1:-1:-1;3193:15:49;;-1:-1:-1;3193:51:49;;;;;274:37:1;;3193:51:49;;;;;;;274:37:1;250:64;3193:51:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3254:5:49;;:23;;;;;;;;;;;;;;:5;;;;;-1:-1:-1;3254:20:49;;-1:-1:-1;3254:23:49;;;;;:5;;:23;;;;;;;;:5;;:23;;;;;;;;;;6569:890;6671:12;;;;;;6642:3;6671:12;;;;;;;;6628:11;;250:64:1;;6671:7:49;;:12;;;;;;;;;;;;;;;6628:11;250:64:1;6671:12:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6671:12:49;6907:5;;:23;;;;;;;;6671:12;;-1:-1:-1;6720:6:49;;6693:16;;;;;;250:64:1;;6772:7:49;;6793:3;;6772:7;6907:5;;;;:21;;:23;;;;;6671:12;;6907:23;;;;;;;;:5;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:117;7072:5;7107:8;7145:4;7179:1;7228;7210:15;:19;6987:268;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6952:325;;;;;;6837:458;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6810:499;;;;;;6772:547;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6772:547:49;;;;;;;;;;;;7329:48;;;;;;;;;;;;;;;;;;;;;;;;6772:547;;-1:-1:-1;6772:547:49;-1:-1:-1;6772:547:49;;-1:-1:-1;250:64:1;;7329:15:49;;:48;;;;;274:37:1;;7329:48:49;;;;;;;274:37:1;250:64;7329:48:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7387:5:49;;:65;;;;;;:5;:65;;;;;;;;;;;;;;7417:4;7387:65;;;;7423:19;:15;:19;7387:65;;;;;;;;;;;;;;;;;;;;;;;;;:5;;;;;-1:-1:-1;7387:12:49;;-1:-1:-1;7387:65:49;;;;;:5;;:65;;;;;;;:5;;:65;;;;;;;;;;1170:257;1217:5;;:33;;;;;;1236:6;1217:33;;;;1245:4;1217:33;;;;;;:5;;;;;:10;;:33;;;;;:5;;:33;;;;;;;;:5;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1260:30:49;;;;;;1282:6;1260:30;;;;;;250:64:1;;-1:-1:-1;1260:13:49;;-1:-1:-1;1260:30:49;;;;;274:37:1;;1260:30:49;;;;;;;274:37:1;250:64;1260:30:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1300:51:49;;;;;;;;;;;;;;;;;;;;;;;;250:64:1;;-1:-1:-1;1300:15:49;;-1:-1:-1;1300:51:49;;;;;274:37:1;;1300:51:49;;;;;;;274:37:1;250:64;1300:51:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1361:5:49;;:35;;;;;;1380:6;1361:35;;;;1389:6;1361:35;;;;;;:5;;;;;-1:-1:-1;1361:10:49;;-1:-1:-1;1361:35:49;;;;;:5;;:35;;;;;;;;:5;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1406:14:49;;;;;;;;250:64:1;;-1:-1:-1;1406:12:49;;-1:-1:-1;1406:14:49;;;;;274:37:1;;1406:14:49;;;;;;;274:37:1;250:64;1406:14:49;;;;;;;;;;3856:930;3946:12;;;;;;3917:3;3946:12;;;;;;;;3903:11;;250:64:1;;3946:7:49;;:12;;;;;;;;;;;;;;;3903:11;250:64:1;3946:12:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3946:12:49;4182:5;;:23;;;;;;;;3946:12;;-1:-1:-1;3995:6:49;;3968:16;;;;;;250:64:1;;4047:7:49;;4068:3;;4047:7;4182:5;;;;:21;;:23;;;;;3946:12;;4182:23;;;;;;;;:5;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:117;4347:5;4382:8;4420:4;4454:1;4485:15;4262:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4227:321;;;;;;4112:454;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4085:495;;;;;;4047:543;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4047:543:49;;;;;;;;;;;4600:5;;:61;;;;;:5;:61;;;;;;;;;;;;;;4630:4;4600:61;;;;4636:15;4600:61;;;;;;;;;;;;;;;;;;;;;;;;;4047:543;;-1:-1:-1;4047:543:49;;-1:-1:-1;4047:543:49;;-1:-1:-1;4600:5:49;;;;;:12;;:61;;;;;:5;;:61;;;;;;;:5;;:61;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4680:5:49;;:32;;;;;;:5;:32;;;;;;;;;;;;;;;;4671:57;;-1:-1:-1;4680:5:49;;;;;-1:-1:-1;4680:15:49;;:32;;;;;;;;;;;;;;;:5;:32;;;;;;;;;;4671:57;4747:5;;:19;;;;;;:5;:19;;;;;;;;;4738:41;;4747:5;;;;;:12;;:19;;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4747:19:49;4776:1;4738:8;:41::i;:::-;3856:930;;;;;;:::o;7465:950::-;7563:12;;;;;;7534:3;7563:12;;;;;;;;7520:11;;250:64:1;;7563:7:49;;:12;;;;;;;;;;;;;;;7520:11;250:64:1;7563:12:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7563:12:49;7799:5;;:23;;;;;;;;7563:12;;-1:-1:-1;7612:6:49;;7585:16;;;;;;250:64:1;;7664:7:49;;7685:3;;7664:7;7799:5;;;;:21;;:23;;;;;7563:12;;7799:23;;;;;;;;:5;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:117;7964:5;7999:8;8037:4;8071:1;8102:15;7879:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7844:321;;;;;;7729:454;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7702:495;;;;;;7664:543;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7664:543:49;;;;;;;;;;;8217:5;;:61;;;;;:5;:61;;;;;;;;;;;;;;8247:4;8217:61;;;;8253:15;8217:61;;;;;;;;;;;;;;;;;;;;;;;;;7664:543;;-1:-1:-1;7664:543:49;;-1:-1:-1;7664:543:49;;-1:-1:-1;8217:5:49;;;;;:12;;:61;;;;;:5;;:61;;;;;;;:5;;:61;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8288:49:49;;;;;;;;;;;;;;;;;;;;;;;250:64:1;;-1:-1:-1;8288:15:49;;-1:-1:-1;8288:49:49;;;;;274:37:1;;8288:49:49;;;;;;;274:37:1;250:64;8288:49:49;;;;;;;;;;1819:584:0;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:0;;;;;;;1896:14;;1869:528;1941:17;1984:16;:14;:16::i;:::-;1980:374;;;2196:43;;;1671:64;2196:43;;;;;;;2221:17;2196:43;;;;;;;;;;;;;1679:55;2196:43;;;;;2086:175;;;;;;;;;2023:20;;1671:64;;2135:34;;2196:43;2086:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2047:232;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;;;;-1:-1:-1;2312:27:0;;-1:-1:-1;;1980:374:0;2374:12;-1:-1:-1;1869:528:0;1819:584;:::o;919:245:49:-;957:5;;:33;;;;;;976:6;957:33;;;;985:4;957:33;;;;;;:5;;;;;:10;;:33;;;;;:5;;:33;;;;;;;;:5;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1000:5:49;;:35;;;;;;1019:6;1000:35;;;;1028:6;1000:35;;;;;;:5;;;;;-1:-1:-1;1000:10:49;;-1:-1:-1;1000:35:49;;;;;:5;;:35;;;;;;;;:5;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1046:44;1055:5;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1055:19:49;1076:13;1046:8;:44::i;:::-;1109:5;;:32;;;;;;1133:6;1109:32;;;;;;1100:57;;1109:5;;;:15;;:32;;;;;;;;;;;;;;:5;:32;;;;;;;;;;658:255;705:5;;:33;;;;;;724:6;705:33;;;;733:4;705:33;;;;;;:5;;;;;:10;;:33;;;;;:5;;:33;;;;;;;;:5;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;748:30:49;;;;;;770:6;748:30;;;;;;250:64:1;;-1:-1:-1;748:13:49;;-1:-1:-1;748:30:49;;;;;274:37:1;;748:30:49;;;;;;;274:37:1;250:64;748:30:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;788:51:49;;;;;;;;;;;;;;;;;;;;;;;;250:64:1;;-1:-1:-1;788:15:49;;-1:-1:-1;788:51:49;;;;;274:37:1;;788:51:49;;;;;;;274:37:1;250:64;788:51:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;849:5:49;;:33;;;;;;868:6;849:33;;;;877:4;849:33;;;;;;:5;;;;;-1:-1:-1;849:10:49;;-1:-1:-1;849:33:49;;;;;:5;;:33;;;;;;;;:5;;:33;;;;;;;;;;3290:560;3339:16;3400:9;3388:21;;3428:11;3493:133;3660:5;;;;;;;;;;;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3660:12:49;;;;;;;;;;-1:-1:-1;3660:12:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3660:12:49;;;;3644:30;;;;;;;3702:10;;;;;;;;;;;;;;;;3765:5;;3465:320;;;;;;;;;;;;;;;;3692:21;3465:320;;;;;;;;;;3765:5;;;;3465:320;;;;;;;;;;;;;;;;;;;;;;;3442:353;;;;;;;;;3819:23;;;;;;3442:353;;-1:-1:-1;3805:38:49;;3442:353;;3765:5;;-1:-1:-1;3819:21:49;;-1:-1:-1;3819:23:49;;;;;-1:-1:-1;3644:30:49;;3819:23;;;;;;;3765:5;3819:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3819:23:49;3805:8;:38::i;:::-;3290:560;;:::o;170:28:1:-;;;;;;;;;:::o;1572:26:0:-;;;;;;:::o;5202:262::-;5264:1;5259;:6;5255:203;;5286:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5346:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5396;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5441:6;:4;:6::i;3615:277::-;3683:1;3678:6;;:1;:6;;;3674:212;;3705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3768:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3821;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3869:6;:4;:6::i;2840:242::-;2990:42;2978:55;3059:16;;2840:242;:::o;4088:277::-;4156:1;4151;:6;4147:212;;4178:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4241:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4294;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4342:6;2410:424;2449:16;:14;:16::i;:::-;2445:359;;;2645:67;;;1671:64;2645:67;;;;;;;2670:17;2645:67;;;;2705:4;1679:55;2645:67;;;;;;;;;;;;;;;;;;;;;;;2534:196;;;;;;;;;2482:11;;1671:64;;2579:43;;2645:67;2534:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:245;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2445:359:0;2813:7;:14;;;;;;;;2410:424::o;-1:-1:-1:-;;;;;;;;:::o",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "IS_SCRIPT()": "f8ccbf47",
    "IS_TEST()": "fa7626d4",
    "failed()": "ba414fa6",
    "setUp()": "0a9254e4",
    "test_burn()": "bec385ec",
    "test_burnOnlyOwner()": "83d0734d",
    "test_domainSeperator()": "ea6c8458",
    "test_mint()": "1e2fc4f7",
    "test_mintOnlyOwner()": "e9893f6a",
    "test_permitRevertsBadDeadline()": "1cef33e2",
    "test_permitRevertsBadNonce()": "55dae67d",
    "test_permitRevertsOnReplay()": "ad65e194",
    "test_permitRevertsPastDeadline()": "82190d05",
    "test_permitSuccess()": "8f8e55c3",
    "test_renounceOwnershipNoOp()": "6c25a6a3",
    "test_setDailtsFailSecondTime()": "4e100e88",
    "test_setDetailsHashAndSetDetails(string,string,uint8)": "1215a6f4",
    "test_setDetailsHashOwner()": "7e1a2df2",
    "test_transferOwnership()": "1f2ba143",
    "test_transferOwnershipOnlyOwner()": "5d4640ed",
    "vm()": "3a768463"
  },
  "ast": {
    "absolutePath": "packages/contracts-bridge/contracts/test/BridgeToken.t.sol",
    "id": 37879,
    "exportedSymbols": {
      "BridgeTokenTest": [
        37878
      ],
      "DSTest": [
        1786
      ],
      "MockWeth": [
        42735
      ],
      "Script": [
        2021
      ],
      "StdStorage": [
        5000
      ],
      "Test": [
        4902
      ],
      "Vm": [
        6909
      ],
      "console": [
        14973
      ],
      "console2": [
        23037
      ],
      "stdError": [
        4972
      ],
      "stdJson": [
        2380
      ],
      "stdMath": [
        6215
      ],
      "stdStorage": [
        6076
      ]
    },
    "nodeType": "SourceUnit",
    "src": "46:8996:49",
    "nodes": [
      {
        "id": 36903,
        "nodeType": "PragmaDirective",
        "src": "46:22:49",
        "literals": [
          "solidity",
          "0.7",
          ".6"
        ]
      },
      {
        "id": 36905,
        "nodeType": "ImportDirective",
        "src": "70:46:49",
        "absolutePath": "packages/contracts-bridge/contracts/test/utils/MockWeth.sol",
        "file": "./utils/MockWeth.sol",
        "scope": 37879,
        "sourceUnit": 42736,
        "symbolAliases": [
          {
            "foreign": {
              "id": 36904,
              "name": "MockWeth",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "78:8:49",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 36906,
        "nodeType": "ImportDirective",
        "src": "117:28:49",
        "absolutePath": "lib/forge-std/src/Test.sol",
        "file": "forge-std/Test.sol",
        "scope": 37879,
        "sourceUnit": 6216,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 37878,
        "nodeType": "ContractDefinition",
        "src": "147:8894:49",
        "nodes": [
          {
            "id": 36910,
            "nodeType": "VariableDeclaration",
            "src": "186:14:49",
            "constant": false,
            "mutability": "mutable",
            "name": "token",
            "scope": 37878,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_MockWeth_$42735",
              "typeString": "contract MockWeth"
            },
            "typeName": {
              "id": 36909,
              "name": "MockWeth",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 42735,
              "src": "186:8:49",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MockWeth_$42735",
                "typeString": "contract MockWeth"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 36915,
            "nodeType": "VariableDeclaration",
            "src": "207:160:49",
            "constant": true,
            "mutability": "constant",
            "name": "PERMIT_TYPEHASH",
            "scope": 37878,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 36911,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "207:7:49",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529",
                  "id": 36913,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "273:84:49",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                    "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                  },
                  "value": "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                    "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                  }
                ],
                "id": 36912,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "250:9:49",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 36914,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "250:117:49",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 36930,
            "nodeType": "FunctionDefinition",
            "src": "374:91:49",
            "body": {
              "id": 36929,
              "nodeType": "Block",
              "src": "398:67:49",
              "statements": [
                {
                  "expression": {
                    "id": 36922,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 36918,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 36910,
                      "src": "408:5:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MockWeth_$42735",
                        "typeString": "contract MockWeth"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 36920,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "416:12:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_MockWeth_$42735_$",
                          "typeString": "function () returns (contract MockWeth)"
                        },
                        "typeName": {
                          "id": 36919,
                          "name": "MockWeth",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 42735,
                          "src": "420:8:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MockWeth_$42735",
                            "typeString": "contract MockWeth"
                          }
                        }
                      },
                      "id": 36921,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "416:14:49",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MockWeth_$42735",
                        "typeString": "contract MockWeth"
                      }
                    },
                    "src": "408:22:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MockWeth_$42735",
                      "typeString": "contract MockWeth"
                    }
                  },
                  "id": 36923,
                  "nodeType": "ExpressionStatement",
                  "src": "408:22:49"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 36924,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "440:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 36926,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31313,
                      "src": "440:16:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 36927,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "440:18:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 36928,
                  "nodeType": "ExpressionStatement",
                  "src": "440:18:49"
                }
              ]
            },
            "functionSelector": "0a9254e4",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setUp",
            "parameters": {
              "id": 36916,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "388:2:49"
            },
            "returnParameters": {
              "id": 36917,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "398:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 36962,
            "nodeType": "FunctionDefinition",
            "src": "471:181:49",
            "body": {
              "id": 36961,
              "nodeType": "Block",
              "src": "499:153:49",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "307842454546",
                            "id": 36938,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "528:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            },
                            "value": "0xBEEF"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            }
                          ],
                          "id": 36937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "520:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 36936,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "520:7:49",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 36939,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "520:15:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "hexValue": "31653138",
                        "id": 36940,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "537:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1e18"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      ],
                      "expression": {
                        "id": 36933,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "509:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 36935,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31355,
                      "src": "509:10:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 36941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "509:33:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 36942,
                  "nodeType": "ExpressionStatement",
                  "src": "509:33:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 36944,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36910,
                            "src": "561:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockWeth_$42735",
                              "typeString": "contract MockWeth"
                            }
                          },
                          "id": 36945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 42958,
                          "src": "561:17:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                            "typeString": "function () view external returns (uint256)"
                          }
                        },
                        "id": 36946,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "561:19:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "31653138",
                        "id": 36947,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "582:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1e18"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      ],
                      "id": 36943,
                      "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": 514,
                      "src": "552:8:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 36948,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "552:35:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 36949,
                  "nodeType": "ExpressionStatement",
                  "src": "552:35:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "307842454546",
                                "id": 36955,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "630:6:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_48879_by_1",
                                  "typeString": "int_const 48879"
                                },
                                "value": "0xBEEF"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_48879_by_1",
                                  "typeString": "int_const 48879"
                                }
                              ],
                              "id": 36954,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "622:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 36953,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "622:7:49",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 36956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "622:15:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "expression": {
                            "id": 36951,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36910,
                            "src": "606:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockWeth_$42735",
                              "typeString": "contract MockWeth"
                            }
                          },
                          "id": 36952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31569,
                          "src": "606:15:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 36957,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "606:32:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "31653138",
                        "id": 36958,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "640:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1e18"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      ],
                      "id": 36950,
                      "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": 514,
                      "src": "597:8:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 36959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "597:48:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 36960,
                  "nodeType": "ExpressionStatement",
                  "src": "597:48:49"
                }
              ]
            },
            "functionSelector": "1e2fc4f7",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_mint",
            "parameters": {
              "id": 36931,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "489:2:49"
            },
            "returnParameters": {
              "id": 36932,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "499:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37006,
            "nodeType": "FunctionDefinition",
            "src": "658:255:49",
            "body": {
              "id": 37005,
              "nodeType": "Block",
              "src": "695:218:49",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "307842454546",
                            "id": 36970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "724:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            },
                            "value": "0xBEEF"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            }
                          ],
                          "id": 36969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "716:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 36968,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "716:7:49",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 36971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "716:15:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "hexValue": "31653138",
                        "id": 36972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "733:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1e18"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      ],
                      "expression": {
                        "id": 36965,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "705:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 36967,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31355,
                      "src": "705:10:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 36973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "705:33:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 36974,
                  "nodeType": "ExpressionStatement",
                  "src": "705:33:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "307842454546",
                            "id": 36980,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "770:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            },
                            "value": "0xBEEF"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            }
                          ],
                          "id": 36979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "762:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 36978,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "762:7:49",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 36981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "762:15:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "id": 36975,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "748:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 36977,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startPrank",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6445,
                      "src": "748:13:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 36982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "748:30:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 36983,
                  "nodeType": "ExpressionStatement",
                  "src": "748:30:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "id": 36987,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "804:34:49",
                        "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": 36984,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "788:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 36986,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "788:15:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 36988,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "788:51:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 36989,
                  "nodeType": "ExpressionStatement",
                  "src": "788:51:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "307842454546",
                            "id": 36995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "868:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            },
                            "value": "0xBEEF"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            }
                          ],
                          "id": 36994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "860:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 36993,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "860:7:49",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 36996,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "860:15:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "hexValue": "31653138",
                        "id": 36997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "877:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1e18"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      ],
                      "expression": {
                        "id": 36990,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "849:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 36992,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31355,
                      "src": "849:10:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 36998,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "849:33:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 36999,
                  "nodeType": "ExpressionStatement",
                  "src": "849:33:49"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 37000,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "892:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37002,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stopPrank",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6462,
                      "src": "892:12:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 37003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "892:14:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37004,
                  "nodeType": "ExpressionStatement",
                  "src": "892:14:49"
                }
              ]
            },
            "functionSelector": "e9893f6a",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_mintOnlyOwner",
            "parameters": {
              "id": 36963,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "685:2:49"
            },
            "returnParameters": {
              "id": 36964,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "695:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37052,
            "nodeType": "FunctionDefinition",
            "src": "919:245:49",
            "body": {
              "id": 37051,
              "nodeType": "Block",
              "src": "947:217:49",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "307842454546",
                            "id": 37014,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "976:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            },
                            "value": "0xBEEF"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            }
                          ],
                          "id": 37013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "968:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 37012,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "968:7:49",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 37015,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "968:15:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "hexValue": "31653138",
                        "id": 37016,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "985:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1e18"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      ],
                      "expression": {
                        "id": 37009,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "957:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31355,
                      "src": "957:10:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 37017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "957:33:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37018,
                  "nodeType": "ExpressionStatement",
                  "src": "957:33:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "307842454546",
                            "id": 37024,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1019:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            },
                            "value": "0xBEEF"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            }
                          ],
                          "id": 37023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1011:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 37022,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1011:7:49",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 37025,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1011:15:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "hexValue": "302e39653138",
                        "id": 37026,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1028:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_900000000000000000_by_1",
                          "typeString": "int_const 900000000000000000"
                        },
                        "value": "0.9e18"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_900000000000000000_by_1",
                          "typeString": "int_const 900000000000000000"
                        }
                      ],
                      "expression": {
                        "id": 37019,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "1000:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37021,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "burn",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31338,
                      "src": "1000:10:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 37027,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1000:35:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37028,
                  "nodeType": "ExpressionStatement",
                  "src": "1000:35:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 37030,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36910,
                            "src": "1055:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockWeth_$42735",
                              "typeString": "contract MockWeth"
                            }
                          },
                          "id": 37031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 42958,
                          "src": "1055:17:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                            "typeString": "function () view external returns (uint256)"
                          }
                        },
                        "id": 37032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1055:19:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_rational_100000000000000000_by_1",
                          "typeString": "int_const 100000000000000000"
                        },
                        "id": 37035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "31653138",
                          "id": 37033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1076:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1e18"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "hexValue": "302e39653138",
                          "id": 37034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1083:6:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_900000000000000000_by_1",
                            "typeString": "int_const 900000000000000000"
                          },
                          "value": "0.9e18"
                        },
                        "src": "1076:13:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100000000000000000_by_1",
                          "typeString": "int_const 100000000000000000"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_100000000000000000_by_1",
                          "typeString": "int_const 100000000000000000"
                        }
                      ],
                      "id": 37029,
                      "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": 514,
                      "src": "1046:8:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 37036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1046:44:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37037,
                  "nodeType": "ExpressionStatement",
                  "src": "1046:44:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "307842454546",
                                "id": 37043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1133:6:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_48879_by_1",
                                  "typeString": "int_const 48879"
                                },
                                "value": "0xBEEF"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_48879_by_1",
                                  "typeString": "int_const 48879"
                                }
                              ],
                              "id": 37042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1125:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 37041,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1125:7:49",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 37044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1125:15:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "expression": {
                            "id": 37039,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36910,
                            "src": "1109:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockWeth_$42735",
                              "typeString": "contract MockWeth"
                            }
                          },
                          "id": 37040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31569,
                          "src": "1109:15:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 37045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1109:32:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_rational_100000000000000000_by_1",
                          "typeString": "int_const 100000000000000000"
                        },
                        "id": 37048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "31653138",
                          "id": 37046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1143:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1e18"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "hexValue": "302e39653138",
                          "id": 37047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1150:6:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_900000000000000000_by_1",
                            "typeString": "int_const 900000000000000000"
                          },
                          "value": "0.9e18"
                        },
                        "src": "1143:13:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100000000000000000_by_1",
                          "typeString": "int_const 100000000000000000"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_100000000000000000_by_1",
                          "typeString": "int_const 100000000000000000"
                        }
                      ],
                      "id": 37038,
                      "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": 514,
                      "src": "1100:8:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 37049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1100:57:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37050,
                  "nodeType": "ExpressionStatement",
                  "src": "1100:57:49"
                }
              ]
            },
            "functionSelector": "bec385ec",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_burn",
            "parameters": {
              "id": 37007,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "937:2:49"
            },
            "returnParameters": {
              "id": 37008,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "947:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37096,
            "nodeType": "FunctionDefinition",
            "src": "1170:257:49",
            "body": {
              "id": 37095,
              "nodeType": "Block",
              "src": "1207:220:49",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "307842454546",
                            "id": 37060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1236:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            },
                            "value": "0xBEEF"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            }
                          ],
                          "id": 37059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1228:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 37058,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1228:7:49",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 37061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1228:15:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "hexValue": "31653138",
                        "id": 37062,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1245:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1e18"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      ],
                      "expression": {
                        "id": 37055,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "1217:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37057,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31355,
                      "src": "1217:10:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 37063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1217:33:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37064,
                  "nodeType": "ExpressionStatement",
                  "src": "1217:33:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "307842454546",
                            "id": 37070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1282:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            },
                            "value": "0xBEEF"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            }
                          ],
                          "id": 37069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1274:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 37068,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1274:7:49",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 37071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1274:15:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "id": 37065,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "1260:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37067,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startPrank",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6445,
                      "src": "1260:13:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 37072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1260:30:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37073,
                  "nodeType": "ExpressionStatement",
                  "src": "1260:30:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "id": 37077,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1316:34:49",
                        "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": 37074,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "1300:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37076,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "1300:15:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 37078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1300:51:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37079,
                  "nodeType": "ExpressionStatement",
                  "src": "1300:51:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "307842454546",
                            "id": 37085,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1380:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            },
                            "value": "0xBEEF"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            }
                          ],
                          "id": 37084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1372:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 37083,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1372:7:49",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 37086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1372:15:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "hexValue": "302e39653138",
                        "id": 37087,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1389:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_900000000000000000_by_1",
                          "typeString": "int_const 900000000000000000"
                        },
                        "value": "0.9e18"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_900000000000000000_by_1",
                          "typeString": "int_const 900000000000000000"
                        }
                      ],
                      "expression": {
                        "id": 37080,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "1361:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "burn",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31338,
                      "src": "1361:10:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 37088,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1361:35:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37089,
                  "nodeType": "ExpressionStatement",
                  "src": "1361:35:49"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 37090,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "1406:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37092,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stopPrank",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6462,
                      "src": "1406:12:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 37093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1406:14:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37094,
                  "nodeType": "ExpressionStatement",
                  "src": "1406:14:49"
                }
              ]
            },
            "functionSelector": "83d0734d",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_burnOnlyOwner",
            "parameters": {
              "id": 37053,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1197:2:49"
            },
            "returnParameters": {
              "id": 37054,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1207:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37104,
            "nodeType": "EventDefinition",
            "src": "1433:118:49",
            "anonymous": false,
            "name": "UpdateDetails",
            "parameters": {
              "id": 37103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37098,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 37104,
                  "src": "1462:19:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 37097,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1462:6:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 37100,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 37104,
                  "src": "1491:21:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 37099,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1491:6:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 37102,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 37104,
                  "src": "1522:22:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 37101,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1522:5:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1452:98:49"
            }
          },
          {
            "id": 37284,
            "nodeType": "FunctionDefinition",
            "src": "1557:1214:49",
            "body": {
              "id": 37283,
              "nodeType": "Block",
              "src": "1694:1077:49",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 37134,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 37126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 37118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 37116,
                              "name": "decimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37110,
                              "src": "1727:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 37117,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1739:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1727:13:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 37125,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 37121,
                                    "name": "symbol",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37108,
                                    "src": "1766:6:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 37120,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1760:5:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 37119,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1760:5:49",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 37122,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1760:13:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 37123,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "1760:20:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 37124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1784:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1760:25:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1727:58:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 37133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 37129,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37106,
                                  "src": "1811:4:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 37128,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1805:5:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 37127,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1805:5:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 37130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1805:11:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 37131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1805:18:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 37132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1827:1:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1805:23:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1727:101:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "id": 37113,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "1704:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37115,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "assume",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6585,
                      "src": "1704:9:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool) external"
                      }
                    },
                    "id": 37135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1704:134:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37136,
                  "nodeType": "ExpressionStatement",
                  "src": "1704:134:49"
                },
                {
                  "assignments": [
                    37138
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37138,
                      "mutability": "mutable",
                      "name": "h",
                      "nodeType": "VariableDeclaration",
                      "scope": 37283,
                      "src": "1848:9:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37137,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1848:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37157,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 37144,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37106,
                                  "src": "1923:4:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 37143,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1917:5:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 37142,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1917:5:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 37145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1917:11:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 37146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1917:18:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 37147,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37106,
                            "src": "1953:4:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 37150,
                                  "name": "symbol",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37108,
                                  "src": "1981:6:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 37149,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1975:5:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 37148,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1975:5:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 37151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1975:13:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 37152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1975:20:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 37153,
                            "name": "symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37108,
                            "src": "2013:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 37154,
                            "name": "decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37110,
                            "src": "2037:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "expression": {
                            "id": 37140,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1883:3:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 37141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "1883:16:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 37155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1883:176:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 37139,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1860:9:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 37156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1860:209:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1848:221:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "61",
                        "id": 37161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2127:3:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                          "typeString": "literal_string \"a\""
                        },
                        "value": "a"
                      },
                      {
                        "hexValue": "62",
                        "id": 37162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2132:3:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510",
                          "typeString": "literal_string \"b\""
                        },
                        "value": "b"
                      },
                      {
                        "hexValue": "3333",
                        "id": 37163,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2137:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_33_by_1",
                          "typeString": "int_const 33"
                        },
                        "value": "33"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                          "typeString": "literal_string \"a\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510",
                          "typeString": "literal_string \"b\""
                        },
                        {
                          "typeIdentifier": "t_rational_33_by_1",
                          "typeString": "int_const 33"
                        }
                      ],
                      "expression": {
                        "id": 37158,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "2110:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37160,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setDetails",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31453,
                      "src": "2110:16:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$__$",
                        "typeString": "function (string memory,string memory,uint8) external"
                      }
                    },
                    "id": 37164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2110:30:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37165,
                  "nodeType": "ExpressionStatement",
                  "src": "2110:30:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 37181,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 37170,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36910,
                                      "src": "2174:5:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_MockWeth_$42735",
                                        "typeString": "contract MockWeth"
                                      }
                                    },
                                    "id": 37171,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "name",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 31580,
                                    "src": "2174:10:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
                                      "typeString": "function () view external returns (string memory)"
                                    }
                                  },
                                  "id": 37172,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2174:12:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 37169,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2168:5:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 37168,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2168:5:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 37173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2168:19:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 37167,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2158:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 37174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2158:30:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "61",
                                  "id": 37178,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2208:3:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                    "typeString": "literal_string \"a\""
                                  },
                                  "value": "a"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
                                    "typeString": "literal_string \"a\""
                                  }
                                ],
                                "id": 37177,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2202:5:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 37176,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2202:5:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 37179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2202:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 37175,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2192:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 37180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2192:21:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2158:55:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 37166,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2150:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 37182,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2150:64:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37183,
                  "nodeType": "ExpressionStatement",
                  "src": "2150:64:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 37199,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 37188,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36910,
                                      "src": "2248:5:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_MockWeth_$42735",
                                        "typeString": "contract MockWeth"
                                      }
                                    },
                                    "id": 37189,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "symbol",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 31591,
                                    "src": "2248:12:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
                                      "typeString": "function () view external returns (string memory)"
                                    }
                                  },
                                  "id": 37190,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2248:14:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 37187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2242:5:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 37186,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2242:5:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 37191,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2242:21:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 37185,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2232:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 37192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2232:32:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "62",
                                  "id": 37196,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2284:3:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510",
                                    "typeString": "literal_string \"b\""
                                  },
                                  "value": "b"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510",
                                    "typeString": "literal_string \"b\""
                                  }
                                ],
                                "id": 37195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2278:5:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 37194,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2278:5:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 37197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2278:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 37193,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2268:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 37198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2268:21:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2232:57:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 37184,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2224:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 37200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2224:66:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37201,
                  "nodeType": "ExpressionStatement",
                  "src": "2224:66:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 37207,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 37203,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36910,
                              "src": "2308:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MockWeth_$42735",
                                "typeString": "contract MockWeth"
                              }
                            },
                            "id": 37204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "decimals",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 31602,
                            "src": "2308:14:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                              "typeString": "function () view external returns (uint8)"
                            }
                          },
                          "id": 37205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2308:16:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "3333",
                          "id": 37206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2328:2:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_33_by_1",
                            "typeString": "int_const 33"
                          },
                          "value": "33"
                        },
                        "src": "2308:22:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 37202,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2300:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 37208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2300:31:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37209,
                  "nodeType": "ExpressionStatement",
                  "src": "2300:31:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37213,
                        "name": "h",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37138,
                        "src": "2411:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37210,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "2390:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37212,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setDetailsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31374,
                      "src": "2390:20:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32) external"
                      }
                    },
                    "id": 37214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2390:23:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37215,
                  "nodeType": "ExpressionStatement",
                  "src": "2390:23:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "74727565",
                        "id": 37219,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2437:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "hexValue": "74727565",
                        "id": 37220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2443:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "hexValue": "74727565",
                        "id": 37221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2449:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 37222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2455:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "id": 37216,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "2423:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37218,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectEmit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6514,
                      "src": "2423:13:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bool_$_t_bool_$_t_bool_$_t_bool_$returns$__$",
                        "typeString": "function (bool,bool,bool,bool) external"
                      }
                    },
                    "id": 37223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2423:38:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37224,
                  "nodeType": "ExpressionStatement",
                  "src": "2423:38:49"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 37226,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37106,
                        "src": "2490:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 37227,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37108,
                        "src": "2496:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 37228,
                        "name": "decimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37110,
                        "src": "2504:8:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 37225,
                      "name": "UpdateDetails",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37104,
                      "src": "2476:13:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$__$",
                        "typeString": "function (string memory,string memory,uint8)"
                      }
                    },
                    "id": 37229,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2476:37:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37230,
                  "nodeType": "EmitStatement",
                  "src": "2471:42:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37234,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37106,
                        "src": "2540:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 37235,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37108,
                        "src": "2546:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 37236,
                        "name": "decimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37110,
                        "src": "2554:8:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "expression": {
                        "id": 37231,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "2523:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37233,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setDetails",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31453,
                      "src": "2523:16:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$__$",
                        "typeString": "function (string memory,string memory,uint8) external"
                      }
                    },
                    "id": 37237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2523:40:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37238,
                  "nodeType": "ExpressionStatement",
                  "src": "2523:40:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 37254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 37243,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36910,
                                      "src": "2597:5:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_MockWeth_$42735",
                                        "typeString": "contract MockWeth"
                                      }
                                    },
                                    "id": 37244,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "name",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 31580,
                                    "src": "2597:10:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
                                      "typeString": "function () view external returns (string memory)"
                                    }
                                  },
                                  "id": 37245,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2597:12:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 37242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2591:5:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 37241,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2591:5:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 37246,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2591:19:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 37240,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2581:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 37247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2581:30:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 37251,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37106,
                                  "src": "2631:4:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 37250,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2625:5:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 37249,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2625:5:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 37252,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2625:11:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 37248,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2615:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 37253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2615:22:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2581:56:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 37239,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2573:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 37255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2573:65:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37256,
                  "nodeType": "ExpressionStatement",
                  "src": "2573:65:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 37272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 37261,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36910,
                                      "src": "2672:5:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_MockWeth_$42735",
                                        "typeString": "contract MockWeth"
                                      }
                                    },
                                    "id": 37262,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "symbol",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 31591,
                                    "src": "2672:12:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
                                      "typeString": "function () view external returns (string memory)"
                                    }
                                  },
                                  "id": 37263,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2672:14:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 37260,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2666:5:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 37259,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2666:5:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 37264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2666:21:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 37258,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2656:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 37265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2656:32:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 37269,
                                  "name": "symbol",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37108,
                                  "src": "2708:6:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 37268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2702:5:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 37267,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2702:5:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 37270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2702:13:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 37266,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2692:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 37271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2692:24:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2656:60:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 37257,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2648:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 37273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2648:69:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37274,
                  "nodeType": "ExpressionStatement",
                  "src": "2648:69:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 37280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 37276,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36910,
                              "src": "2735:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MockWeth_$42735",
                                "typeString": "contract MockWeth"
                              }
                            },
                            "id": 37277,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "decimals",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 31602,
                            "src": "2735:14:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                              "typeString": "function () view external returns (uint8)"
                            }
                          },
                          "id": 37278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2735:16:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 37279,
                          "name": "decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37110,
                          "src": "2755:8:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "2735:28:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 37275,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2727:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 37281,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2727:37:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37282,
                  "nodeType": "ExpressionStatement",
                  "src": "2727:37:49"
                }
              ]
            },
            "functionSelector": "1215a6f4",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_setDetailsHashAndSetDetails",
            "parameters": {
              "id": 37111,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37106,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 37284,
                  "src": "1608:18:49",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 37105,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1608:6:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 37108,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 37284,
                  "src": "1636:20:49",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 37107,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1636:6:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 37110,
                  "mutability": "mutable",
                  "name": "decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 37284,
                  "src": "1666:14:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 37109,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1666:5:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1598:88:49"
            },
            "returnParameters": {
              "id": 37112,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1694:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37322,
            "nodeType": "FunctionDefinition",
            "src": "2777:294:49",
            "body": {
              "id": 37321,
              "nodeType": "Block",
              "src": "2824:247:49",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "",
                        "id": 37290,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2851:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "hexValue": "",
                        "id": 37291,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2855:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "hexValue": "31",
                        "id": 37292,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2859:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "expression": {
                        "id": 37287,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "2834:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37289,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setDetails",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31453,
                      "src": "2834:16:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$__$",
                        "typeString": "function (string memory,string memory,uint8) external"
                      }
                    },
                    "id": 37293,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2834:27:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37294,
                  "nodeType": "ExpressionStatement",
                  "src": "2834:27:49"
                },
                {
                  "assignments": [
                    37296
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37296,
                      "mutability": "mutable",
                      "name": "name",
                      "nodeType": "VariableDeclaration",
                      "scope": 37321,
                      "src": "2871:18:49",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 37295,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2871:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37298,
                  "initialValue": {
                    "hexValue": "4e756d656e6f72",
                    "id": 37297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2892:9:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_25fd670cc8c51d2136aa5198bf63efedd2195867b5d01cbba5fa8a3c34c17af0",
                      "typeString": "literal_string \"Numenor\""
                    },
                    "value": "Numenor"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2871:30:49"
                },
                {
                  "assignments": [
                    37300
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37300,
                      "mutability": "mutable",
                      "name": "symbol",
                      "nodeType": "VariableDeclaration",
                      "scope": 37321,
                      "src": "2911:20:49",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 37299,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2911:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37302,
                  "initialValue": {
                    "hexValue": "4e4d",
                    "id": 37301,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2934:4:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_1ecee85901464eb55b9fc9600d861404e9f56e1735960e526543480601166024",
                      "typeString": "literal_string \"NM\""
                    },
                    "value": "NM"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2911:27:49"
                },
                {
                  "assignments": [
                    37304
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37304,
                      "mutability": "mutable",
                      "name": "decimals",
                      "nodeType": "VariableDeclaration",
                      "scope": 37321,
                      "src": "2948:14:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 37303,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "2948:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37306,
                  "initialValue": {
                    "hexValue": "3139",
                    "id": 37305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2965:2:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_19_by_1",
                      "typeString": "int_const 19"
                    },
                    "value": "19"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2948:19:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "21636f6d6d69747465642064657461696c73",
                        "id": 37310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2993:20:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cf9eaec9863fe107523f05b63310d95cddaecc8e74b1e5f279506b6fbb786ee1",
                          "typeString": "literal_string \"!committed details\""
                        },
                        "value": "!committed details"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_cf9eaec9863fe107523f05b63310d95cddaecc8e74b1e5f279506b6fbb786ee1",
                          "typeString": "literal_string \"!committed details\""
                        }
                      ],
                      "expression": {
                        "id": 37307,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "2977:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37309,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "2977:15:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 37311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2977:37:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37312,
                  "nodeType": "ExpressionStatement",
                  "src": "2977:37:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37316,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37296,
                        "src": "3041:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 37317,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37300,
                        "src": "3047:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 37318,
                        "name": "decimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37304,
                        "src": "3055:8:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "expression": {
                        "id": 37313,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "3024:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37315,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setDetails",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31453,
                      "src": "3024:16:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$__$",
                        "typeString": "function (string memory,string memory,uint8) external"
                      }
                    },
                    "id": 37319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3024:40:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37320,
                  "nodeType": "ExpressionStatement",
                  "src": "3024:40:49"
                }
              ]
            },
            "functionSelector": "4e100e88",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_setDailtsFailSecondTime",
            "parameters": {
              "id": 37285,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2814:2:49"
            },
            "returnParameters": {
              "id": 37286,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2824:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37351,
            "nodeType": "FunctionDefinition",
            "src": "3077:207:49",
            "body": {
              "id": 37350,
              "nodeType": "Block",
              "src": "3120:164:49",
              "statements": [
                {
                  "assignments": [
                    37326
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37326,
                      "mutability": "mutable",
                      "name": "h",
                      "nodeType": "VariableDeclaration",
                      "scope": 37350,
                      "src": "3130:9:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37325,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3130:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37328,
                  "initialValue": {
                    "hexValue": "68617368",
                    "id": 37327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3142:6:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_33027547537d35728a741470df1ccf65de10b454ca0def7c5c20b257b7b8d161",
                      "typeString": "literal_string \"hash\""
                    },
                    "value": "hash"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3130:18:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "307842454546",
                            "id": 37334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3175:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            },
                            "value": "0xBEEF"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_48879_by_1",
                              "typeString": "int_const 48879"
                            }
                          ],
                          "id": 37333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3167:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 37332,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3167:7:49",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 37335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3167:15:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "id": 37329,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "3158:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37331,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "prank",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6440,
                      "src": "3158:8:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 37336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3158:25:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37337,
                  "nodeType": "ExpressionStatement",
                  "src": "3158:25:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "id": 37341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3209:34:49",
                        "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": 37338,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "3193:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37340,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "3193:15:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 37342,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3193:51:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37343,
                  "nodeType": "ExpressionStatement",
                  "src": "3193:51:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37347,
                        "name": "h",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37326,
                        "src": "3275:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37344,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "3254:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setDetailsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31374,
                      "src": "3254:20:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32) external"
                      }
                    },
                    "id": 37348,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3254:23:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37349,
                  "nodeType": "ExpressionStatement",
                  "src": "3254:23:49"
                }
              ]
            },
            "functionSelector": "7e1a2df2",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_setDetailsHashOwner",
            "parameters": {
              "id": 37323,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3110:2:49"
            },
            "returnParameters": {
              "id": 37324,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3120:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37396,
            "nodeType": "FunctionDefinition",
            "src": "3290:560:49",
            "body": {
              "id": 37395,
              "nodeType": "Block",
              "src": "3329:521:49",
              "statements": [
                {
                  "assignments": [
                    37355
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37355,
                      "mutability": "mutable",
                      "name": "_chainId",
                      "nodeType": "VariableDeclaration",
                      "scope": 37395,
                      "src": "3339:16:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 37354,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3339:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37356,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3339:16:49"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "3374:45:49",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "3388:21:49",
                        "value": {
                          "arguments": [],
                          "functionName": {
                            "name": "chainid",
                            "nodeType": "YulIdentifier",
                            "src": "3400:7:49"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3400:9:49"
                        },
                        "variableNames": [
                          {
                            "name": "_chainId",
                            "nodeType": "YulIdentifier",
                            "src": "3388:8:49"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 37355,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3388:8:49",
                      "valueSize": 1
                    }
                  ],
                  "id": 37357,
                  "nodeType": "InlineAssembly",
                  "src": "3365:54:49"
                },
                {
                  "assignments": [
                    37359
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37359,
                      "mutability": "mutable",
                      "name": "sep",
                      "nodeType": "VariableDeclaration",
                      "scope": 37395,
                      "src": "3428:11:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37358,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3428:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37387,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                "id": 37364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3524:84:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                  "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                },
                                "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                  "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                }
                              ],
                              "id": 37363,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "3493:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 37365,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3493:133:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "id": 37369,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36910,
                                        "src": "3660:5:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                                          "typeString": "contract MockWeth"
                                        }
                                      },
                                      "id": 37370,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "name",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 31580,
                                      "src": "3660:10:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
                                        "typeString": "function () view external returns (string memory)"
                                      }
                                    },
                                    "id": 37371,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3660:12:49",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 37368,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3654:5:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 37367,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3654:5:49",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 37372,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3654:19:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 37366,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "3644:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 37373,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3644:30:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "hexValue": "31",
                                    "id": 37377,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3708:3:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                      "typeString": "literal_string \"1\""
                                    },
                                    "value": "1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                      "typeString": "literal_string \"1\""
                                    }
                                  ],
                                  "id": 37376,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3702:5:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 37375,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3702:5:49",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 37378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3702:10:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 37374,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "3692:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 37379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3692:21:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 37380,
                            "name": "_chainId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37355,
                            "src": "3731:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 37383,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36910,
                                "src": "3765:5:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MockWeth_$42735",
                                  "typeString": "contract MockWeth"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MockWeth_$42735",
                                  "typeString": "contract MockWeth"
                                }
                              ],
                              "id": 37382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3757:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 37381,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3757:7:49",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 37384,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3757:14:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 37361,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3465:3:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 37362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "3465:10:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 37385,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3465:320:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 37360,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "3442:9:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 37386,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3442:353:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3428:367:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37389,
                        "name": "sep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37359,
                        "src": "3814:3:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 37390,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36910,
                            "src": "3819:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockWeth_$42735",
                              "typeString": "contract MockWeth"
                            }
                          },
                          "id": 37391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "domainSeparator",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31635,
                          "src": "3819:21:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 37392,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3819:23:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 37388,
                      "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": "3805:8:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 37393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3805:38:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37394,
                  "nodeType": "ExpressionStatement",
                  "src": "3805:38:49"
                }
              ]
            },
            "functionSelector": "ea6c8458",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_domainSeperator",
            "parameters": {
              "id": 37352,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3319:2:49"
            },
            "returnParameters": {
              "id": 37353,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3329:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37486,
            "nodeType": "FunctionDefinition",
            "src": "3856:930:49",
            "body": {
              "id": 37485,
              "nodeType": "Block",
              "src": "3893:893:49",
              "statements": [
                {
                  "assignments": [
                    37400
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37400,
                      "mutability": "mutable",
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 37485,
                      "src": "3903:11:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 37399,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3903:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37402,
                  "initialValue": {
                    "hexValue": "313233",
                    "id": 37401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3917:3:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_123_by_1",
                      "typeString": "int_const 123"
                    },
                    "value": "123"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3903:17:49"
                },
                {
                  "assignments": [
                    37404
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37404,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 37485,
                      "src": "3930:13:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 37403,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3930:7:49",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37409,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37407,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37400,
                        "src": "3954:3:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 37405,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "3946:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37406,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6287,
                      "src": "3946:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) external returns (address)"
                      }
                    },
                    "id": 37408,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3946:12:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3930:28:49"
                },
                {
                  "assignments": [
                    37411
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37411,
                      "mutability": "mutable",
                      "name": "toPermit",
                      "nodeType": "VariableDeclaration",
                      "scope": 37485,
                      "src": "3968:16:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 37410,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3968:7:49",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37416,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "307842454546",
                        "id": 37414,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3995:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        },
                        "value": "0xBEEF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        }
                      ],
                      "id": 37413,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3987:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 37412,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3987:7:49",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 37415,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3987:15:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3968:34:49"
                },
                {
                  "assignments": [
                    37418,
                    37420,
                    37422
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37418,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 37485,
                      "src": "4014:7:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 37417,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "4014:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 37420,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 37485,
                      "src": "4023:9:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37419,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4023:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 37422,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 37485,
                      "src": "4034:9:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37421,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4034:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37448,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37425,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37400,
                        "src": "4068:3:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "1901",
                                "id": 37429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4150:10:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string hex\"1901\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 37430,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36910,
                                    "src": "4182:5:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MockWeth_$42735",
                                      "typeString": "contract MockWeth"
                                    }
                                  },
                                  "id": 37431,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "domainSeparator",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 31635,
                                  "src": "4182:21:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                                    "typeString": "function () view external returns (bytes32)"
                                  }
                                },
                                "id": 37432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4182:23:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 37436,
                                        "name": "PERMIT_TYPEHASH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36915,
                                        "src": "4302:15:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 37437,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37404,
                                        "src": "4347:5:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 37438,
                                        "name": "toPermit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37411,
                                        "src": "4382:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "hexValue": "31653138",
                                        "id": 37439,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4420:4:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                          "typeString": "int_const 1000000000000000000"
                                        },
                                        "value": "1e18"
                                      },
                                      {
                                        "hexValue": "30",
                                        "id": 37440,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4454:1:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      {
                                        "expression": {
                                          "id": 37441,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "4485:5:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 37442,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "src": "4485:15:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                          "typeString": "int_const 1000000000000000000"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 37434,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "4262:3:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 37435,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encode",
                                      "nodeType": "MemberAccess",
                                      "src": "4262:10:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 37443,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4262:264:49",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 37433,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "4227:9:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 37444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4227:321:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string hex\"1901\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 37427,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "4112:3:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 37428,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "src": "4112:16:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 37445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4112:454:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 37426,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "4085:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 37446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4085:495:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37423,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "4047:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sign",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6280,
                      "src": "4047:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$returns$_t_uint8_$_t_bytes32_$_t_bytes32_$",
                        "typeString": "function (uint256,bytes32) external returns (uint8,bytes32,bytes32)"
                      }
                    },
                    "id": 37447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4047:543:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(uint8,bytes32,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4013:577:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37452,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37404,
                        "src": "4613:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 37453,
                        "name": "toPermit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37411,
                        "src": "4620:8:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "hexValue": "31653138",
                        "id": 37454,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4630:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1e18"
                      },
                      {
                        "expression": {
                          "id": 37455,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "4636:5:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 37456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "src": "4636:15:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 37457,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37418,
                        "src": "4653:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 37458,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37420,
                        "src": "4656:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 37459,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37422,
                        "src": "4659:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37449,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "4600:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37451,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "permit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31552,
                      "src": "4600:12:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                      }
                    },
                    "id": 37460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4600:61:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37461,
                  "nodeType": "ExpressionStatement",
                  "src": "4600:61:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 37465,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37404,
                            "src": "4696:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 37466,
                            "name": "toPermit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37411,
                            "src": "4703:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 37463,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36910,
                            "src": "4680:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockWeth_$42735",
                              "typeString": "contract MockWeth"
                            }
                          },
                          "id": 37464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "allowance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 42990,
                          "src": "4680:15:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address,address) view external returns (uint256)"
                          }
                        },
                        "id": 37467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4680:32:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "31653138",
                            "id": 37470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4722:4:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "value": "1e18"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          ],
                          "id": 37469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4714:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 37468,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4714:7:49",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 37471,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4714:13:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 37462,
                      "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": 514,
                      "src": "4671:8:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 37472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4671:57:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37473,
                  "nodeType": "ExpressionStatement",
                  "src": "4671:57:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 37477,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37404,
                            "src": "4760:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 37475,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36910,
                            "src": "4747:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockWeth_$42735",
                              "typeString": "contract MockWeth"
                            }
                          },
                          "id": 37476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "nonces",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31295,
                          "src": "4747:12:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 37478,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4747:19:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "31",
                            "id": 37481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4776:1:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "id": 37480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4768:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 37479,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4768:7:49",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 37482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4768:10:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 37474,
                      "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": 514,
                      "src": "4738:8:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 37483,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4738:41:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37484,
                  "nodeType": "ExpressionStatement",
                  "src": "4738:41:49"
                }
              ]
            },
            "functionSelector": "8f8e55c3",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_permitSuccess",
            "parameters": {
              "id": 37397,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3883:2:49"
            },
            "returnParameters": {
              "id": 37398,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3893:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37559,
            "nodeType": "FunctionDefinition",
            "src": "4792:879:49",
            "body": {
              "id": 37558,
              "nodeType": "Block",
              "src": "4837:834:49",
              "statements": [
                {
                  "assignments": [
                    37490
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37490,
                      "mutability": "mutable",
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 37558,
                      "src": "4847:11:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 37489,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4847:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37492,
                  "initialValue": {
                    "hexValue": "313233",
                    "id": 37491,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4861:3:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_123_by_1",
                      "typeString": "int_const 123"
                    },
                    "value": "123"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4847:17:49"
                },
                {
                  "assignments": [
                    37494
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37494,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 37558,
                      "src": "4874:13:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 37493,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4874:7:49",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37499,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37497,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37490,
                        "src": "4898:3:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 37495,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "4890:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37496,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6287,
                      "src": "4890:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) external returns (address)"
                      }
                    },
                    "id": 37498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4890:12:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4874:28:49"
                },
                {
                  "assignments": [
                    37501
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37501,
                      "mutability": "mutable",
                      "name": "toPermit",
                      "nodeType": "VariableDeclaration",
                      "scope": 37558,
                      "src": "4912:16:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 37500,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4912:7:49",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37506,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "307842454546",
                        "id": 37504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4939:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        },
                        "value": "0xBEEF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        }
                      ],
                      "id": 37503,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4931:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 37502,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4931:7:49",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 37505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4931:15:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4912:34:49"
                },
                {
                  "assignments": [
                    37508,
                    37510,
                    37512
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37508,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 37558,
                      "src": "4958:7:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 37507,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "4958:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 37510,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 37558,
                      "src": "4967:9:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37509,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4967:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 37512,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 37558,
                      "src": "4978:9:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37511,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4978:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37538,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37515,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37490,
                        "src": "5012:3:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "1901",
                                "id": 37519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5094:10:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string hex\"1901\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 37520,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36910,
                                    "src": "5126:5:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MockWeth_$42735",
                                      "typeString": "contract MockWeth"
                                    }
                                  },
                                  "id": 37521,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "domainSeparator",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 31635,
                                  "src": "5126:21:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                                    "typeString": "function () view external returns (bytes32)"
                                  }
                                },
                                "id": 37522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5126:23:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 37526,
                                        "name": "PERMIT_TYPEHASH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36915,
                                        "src": "5246:15:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 37527,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37494,
                                        "src": "5291:5:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 37528,
                                        "name": "toPermit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37501,
                                        "src": "5326:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "hexValue": "31653138",
                                        "id": 37529,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5364:4:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                          "typeString": "int_const 1000000000000000000"
                                        },
                                        "value": "1e18"
                                      },
                                      {
                                        "hexValue": "31",
                                        "id": 37530,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5398:1:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      {
                                        "expression": {
                                          "id": 37531,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "5429:5:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 37532,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "src": "5429:15:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                          "typeString": "int_const 1000000000000000000"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 37524,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "5206:3:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 37525,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encode",
                                      "nodeType": "MemberAccess",
                                      "src": "5206:10:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 37533,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5206:264:49",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 37523,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "5171:9:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 37534,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5171:321:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string hex\"1901\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 37517,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "5056:3:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 37518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "src": "5056:16:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 37535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5056:454:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 37516,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "5029:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 37536,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5029:495:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37513,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "4991:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37514,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sign",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6280,
                      "src": "4991:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$returns$_t_uint8_$_t_bytes32_$_t_bytes32_$",
                        "typeString": "function (uint256,bytes32) external returns (uint8,bytes32,bytes32)"
                      }
                    },
                    "id": 37537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4991:543:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(uint8,bytes32,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4957:577:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "45524332305065726d69743a20696e76616c6964207369676e6174757265",
                        "id": 37542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5560:32:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124",
                          "typeString": "literal_string \"ERC20Permit: invalid signature\""
                        },
                        "value": "ERC20Permit: invalid signature"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124",
                          "typeString": "literal_string \"ERC20Permit: invalid signature\""
                        }
                      ],
                      "expression": {
                        "id": 37539,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "5544:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37541,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "5544:15:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 37543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5544:49:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37544,
                  "nodeType": "ExpressionStatement",
                  "src": "5544:49:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37548,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37494,
                        "src": "5616:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 37549,
                        "name": "toPermit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37501,
                        "src": "5623:8:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "hexValue": "31653138",
                        "id": 37550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5633:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1e18"
                      },
                      {
                        "expression": {
                          "id": 37551,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "5639:5:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 37552,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "src": "5639:15:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 37553,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37508,
                        "src": "5656:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 37554,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37510,
                        "src": "5659:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 37555,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37512,
                        "src": "5662:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37545,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "5603:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37547,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "permit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31552,
                      "src": "5603:12:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                      }
                    },
                    "id": 37556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5603:61:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37557,
                  "nodeType": "ExpressionStatement",
                  "src": "5603:61:49"
                }
              ]
            },
            "functionSelector": "55dae67d",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_permitRevertsBadNonce",
            "parameters": {
              "id": 37487,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4827:2:49"
            },
            "returnParameters": {
              "id": 37488,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4837:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37634,
            "nodeType": "FunctionDefinition",
            "src": "5677:886:49",
            "body": {
              "id": 37633,
              "nodeType": "Block",
              "src": "5725:838:49",
              "statements": [
                {
                  "assignments": [
                    37563
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37563,
                      "mutability": "mutable",
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 37633,
                      "src": "5735:11:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 37562,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5735:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37565,
                  "initialValue": {
                    "hexValue": "313233",
                    "id": 37564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5749:3:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_123_by_1",
                      "typeString": "int_const 123"
                    },
                    "value": "123"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5735:17:49"
                },
                {
                  "assignments": [
                    37567
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37567,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 37633,
                      "src": "5762:13:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 37566,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5762:7:49",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37572,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37570,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37563,
                        "src": "5786:3:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 37568,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "5778:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37569,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6287,
                      "src": "5778:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) external returns (address)"
                      }
                    },
                    "id": 37571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5778:12:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5762:28:49"
                },
                {
                  "assignments": [
                    37574
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37574,
                      "mutability": "mutable",
                      "name": "toPermit",
                      "nodeType": "VariableDeclaration",
                      "scope": 37633,
                      "src": "5800:16:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 37573,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5800:7:49",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37579,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "307842454546",
                        "id": 37577,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5827:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        },
                        "value": "0xBEEF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        }
                      ],
                      "id": 37576,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "5819:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 37575,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5819:7:49",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 37578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5819:15:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5800:34:49"
                },
                {
                  "assignments": [
                    37581,
                    37583,
                    37585
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37581,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 37633,
                      "src": "5846:7:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 37580,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "5846:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 37583,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 37633,
                      "src": "5855:9:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37582,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5855:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 37585,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 37633,
                      "src": "5866:9:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37584,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5866:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37611,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37588,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37563,
                        "src": "5900:3:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "1901",
                                "id": 37592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5982:10:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string hex\"1901\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 37593,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36910,
                                    "src": "6014:5:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MockWeth_$42735",
                                      "typeString": "contract MockWeth"
                                    }
                                  },
                                  "id": 37594,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "domainSeparator",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 31635,
                                  "src": "6014:21:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                                    "typeString": "function () view external returns (bytes32)"
                                  }
                                },
                                "id": 37595,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6014:23:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 37599,
                                        "name": "PERMIT_TYPEHASH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36915,
                                        "src": "6134:15:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 37600,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37567,
                                        "src": "6179:5:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 37601,
                                        "name": "toPermit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37574,
                                        "src": "6214:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "hexValue": "31653138",
                                        "id": 37602,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6252:4:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                          "typeString": "int_const 1000000000000000000"
                                        },
                                        "value": "1e18"
                                      },
                                      {
                                        "hexValue": "30",
                                        "id": 37603,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6286:1:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      {
                                        "expression": {
                                          "id": 37604,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "6317:5:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 37605,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "src": "6317:15:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                          "typeString": "int_const 1000000000000000000"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 37597,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "6094:3:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 37598,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encode",
                                      "nodeType": "MemberAccess",
                                      "src": "6094:10:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 37606,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6094:264:49",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 37596,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "6059:9:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 37607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6059:321:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string hex\"1901\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 37590,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "5944:3:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 37591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "src": "5944:16:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 37608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5944:454:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 37589,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "5917:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 37609,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5917:495:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37586,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "5879:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37587,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sign",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6280,
                      "src": "5879:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$returns$_t_uint8_$_t_bytes32_$_t_bytes32_$",
                        "typeString": "function (uint256,bytes32) external returns (uint8,bytes32,bytes32)"
                      }
                    },
                    "id": 37610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5879:543:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(uint8,bytes32,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5845:577:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "45524332305065726d69743a20696e76616c6964207369676e6174757265",
                        "id": 37615,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6448:32:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124",
                          "typeString": "literal_string \"ERC20Permit: invalid signature\""
                        },
                        "value": "ERC20Permit: invalid signature"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124",
                          "typeString": "literal_string \"ERC20Permit: invalid signature\""
                        }
                      ],
                      "expression": {
                        "id": 37612,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "6432:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37614,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "6432:15:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 37616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6432:49:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37617,
                  "nodeType": "ExpressionStatement",
                  "src": "6432:49:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37621,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37567,
                        "src": "6504:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 37622,
                        "name": "toPermit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37574,
                        "src": "6511:8:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "hexValue": "31653138",
                        "id": 37623,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6521:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1e18"
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 37627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 37624,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "6527:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 37625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "src": "6527:15:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "hexValue": "31",
                          "id": 37626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6545:1:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "6527:19:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 37628,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37581,
                        "src": "6548:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 37629,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37583,
                        "src": "6551:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 37630,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37585,
                        "src": "6554:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37618,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "6491:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37620,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "permit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31552,
                      "src": "6491:12:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                      }
                    },
                    "id": 37631,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6491:65:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37632,
                  "nodeType": "ExpressionStatement",
                  "src": "6491:65:49"
                }
              ]
            },
            "functionSelector": "1cef33e2",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_permitRevertsBadDeadline",
            "parameters": {
              "id": 37560,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5715:2:49"
            },
            "returnParameters": {
              "id": 37561,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5725:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37711,
            "nodeType": "FunctionDefinition",
            "src": "6569:890:49",
            "body": {
              "id": 37710,
              "nodeType": "Block",
              "src": "6618:841:49",
              "statements": [
                {
                  "assignments": [
                    37638
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37638,
                      "mutability": "mutable",
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 37710,
                      "src": "6628:11:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 37637,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6628:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37640,
                  "initialValue": {
                    "hexValue": "313233",
                    "id": 37639,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6642:3:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_123_by_1",
                      "typeString": "int_const 123"
                    },
                    "value": "123"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6628:17:49"
                },
                {
                  "assignments": [
                    37642
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37642,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 37710,
                      "src": "6655:13:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 37641,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6655:7:49",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37647,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37645,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37638,
                        "src": "6679:3:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 37643,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "6671:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37644,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6287,
                      "src": "6671:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) external returns (address)"
                      }
                    },
                    "id": 37646,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6671:12:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6655:28:49"
                },
                {
                  "assignments": [
                    37649
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37649,
                      "mutability": "mutable",
                      "name": "toPermit",
                      "nodeType": "VariableDeclaration",
                      "scope": 37710,
                      "src": "6693:16:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 37648,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6693:7:49",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37654,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "307842454546",
                        "id": 37652,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6720:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        },
                        "value": "0xBEEF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        }
                      ],
                      "id": 37651,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6712:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 37650,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6712:7:49",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 37653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6712:15:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6693:34:49"
                },
                {
                  "assignments": [
                    37656,
                    37658,
                    37660
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37656,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 37710,
                      "src": "6739:7:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 37655,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "6739:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 37658,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 37710,
                      "src": "6748:9:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37657,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6748:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 37660,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 37710,
                      "src": "6759:9:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37659,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6759:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37688,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37663,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37638,
                        "src": "6793:3:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "1901",
                                "id": 37667,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6875:10:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string hex\"1901\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 37668,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36910,
                                    "src": "6907:5:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MockWeth_$42735",
                                      "typeString": "contract MockWeth"
                                    }
                                  },
                                  "id": 37669,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "domainSeparator",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 31635,
                                  "src": "6907:21:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                                    "typeString": "function () view external returns (bytes32)"
                                  }
                                },
                                "id": 37670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6907:23:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 37674,
                                        "name": "PERMIT_TYPEHASH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36915,
                                        "src": "7027:15:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 37675,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37642,
                                        "src": "7072:5:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 37676,
                                        "name": "toPermit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37649,
                                        "src": "7107:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "hexValue": "31653138",
                                        "id": 37677,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7145:4:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                          "typeString": "int_const 1000000000000000000"
                                        },
                                        "value": "1e18"
                                      },
                                      {
                                        "hexValue": "30",
                                        "id": 37678,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7179:1:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 37682,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 37679,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -4,
                                            "src": "7210:5:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 37680,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "timestamp",
                                          "nodeType": "MemberAccess",
                                          "src": "7210:15:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "hexValue": "31",
                                          "id": 37681,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7228:1:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "7210:19:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                          "typeString": "int_const 1000000000000000000"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 37672,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "6987:3:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 37673,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encode",
                                      "nodeType": "MemberAccess",
                                      "src": "6987:10:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 37683,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6987:268:49",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 37671,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "6952:9:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 37684,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6952:325:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string hex\"1901\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 37665,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "6837:3:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 37666,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "src": "6837:16:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 37685,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6837:458:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 37664,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "6810:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 37686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6810:499:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37661,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "6772:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37662,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sign",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6280,
                      "src": "6772:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$returns$_t_uint8_$_t_bytes32_$_t_bytes32_$",
                        "typeString": "function (uint256,bytes32) external returns (uint8,bytes32,bytes32)"
                      }
                    },
                    "id": 37687,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6772:547:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(uint8,bytes32,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6738:581:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "45524332305065726d69743a206578706972656420646561646c696e65",
                        "id": 37692,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7345:31:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd",
                          "typeString": "literal_string \"ERC20Permit: expired deadline\""
                        },
                        "value": "ERC20Permit: expired deadline"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd",
                          "typeString": "literal_string \"ERC20Permit: expired deadline\""
                        }
                      ],
                      "expression": {
                        "id": 37689,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "7329:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37691,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "7329:15:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 37693,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7329:48:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37694,
                  "nodeType": "ExpressionStatement",
                  "src": "7329:48:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37698,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37642,
                        "src": "7400:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 37699,
                        "name": "toPermit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37649,
                        "src": "7407:8:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "hexValue": "31653138",
                        "id": 37700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7417:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1e18"
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 37704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 37701,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "7423:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 37702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "src": "7423:15:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "hexValue": "31",
                          "id": 37703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7441:1:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "7423:19:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 37705,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37656,
                        "src": "7444:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 37706,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37658,
                        "src": "7447:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 37707,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37660,
                        "src": "7450:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37695,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "7387:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37697,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "permit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31552,
                      "src": "7387:12:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                      }
                    },
                    "id": 37708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7387:65:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37709,
                  "nodeType": "ExpressionStatement",
                  "src": "7387:65:49"
                }
              ]
            },
            "functionSelector": "82190d05",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_permitRevertsPastDeadline",
            "parameters": {
              "id": 37635,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6608:2:49"
            },
            "returnParameters": {
              "id": 37636,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6618:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37797,
            "nodeType": "FunctionDefinition",
            "src": "7465:950:49",
            "body": {
              "id": 37796,
              "nodeType": "Block",
              "src": "7510:905:49",
              "statements": [
                {
                  "assignments": [
                    37715
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37715,
                      "mutability": "mutable",
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 37796,
                      "src": "7520:11:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 37714,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7520:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37717,
                  "initialValue": {
                    "hexValue": "313233",
                    "id": 37716,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7534:3:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_123_by_1",
                      "typeString": "int_const 123"
                    },
                    "value": "123"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7520:17:49"
                },
                {
                  "assignments": [
                    37719
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37719,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 37796,
                      "src": "7547:13:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 37718,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7547:7:49",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37724,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37722,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37715,
                        "src": "7571:3:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 37720,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "7563:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37721,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6287,
                      "src": "7563:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) external returns (address)"
                      }
                    },
                    "id": 37723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7563:12:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7547:28:49"
                },
                {
                  "assignments": [
                    37726
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37726,
                      "mutability": "mutable",
                      "name": "toPermit",
                      "nodeType": "VariableDeclaration",
                      "scope": 37796,
                      "src": "7585:16:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 37725,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7585:7:49",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37731,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "307842454546",
                        "id": 37729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7612:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        },
                        "value": "0xBEEF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        }
                      ],
                      "id": 37728,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7604:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 37727,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7604:7:49",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 37730,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7604:15:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7585:34:49"
                },
                {
                  "assignments": [
                    37733,
                    37735,
                    37737
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37733,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 37796,
                      "src": "7631:7:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 37732,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "7631:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 37735,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 37796,
                      "src": "7640:9:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37734,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7640:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 37737,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 37796,
                      "src": "7651:9:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37736,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7651:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37763,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37740,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37715,
                        "src": "7685:3:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "1901",
                                "id": 37744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7767:10:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string hex\"1901\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 37745,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36910,
                                    "src": "7799:5:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MockWeth_$42735",
                                      "typeString": "contract MockWeth"
                                    }
                                  },
                                  "id": 37746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "domainSeparator",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 31635,
                                  "src": "7799:21:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                                    "typeString": "function () view external returns (bytes32)"
                                  }
                                },
                                "id": 37747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7799:23:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 37751,
                                        "name": "PERMIT_TYPEHASH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36915,
                                        "src": "7919:15:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 37752,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37719,
                                        "src": "7964:5:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 37753,
                                        "name": "toPermit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37726,
                                        "src": "7999:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "hexValue": "31653138",
                                        "id": 37754,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8037:4:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                          "typeString": "int_const 1000000000000000000"
                                        },
                                        "value": "1e18"
                                      },
                                      {
                                        "hexValue": "30",
                                        "id": 37755,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8071:1:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      {
                                        "expression": {
                                          "id": 37756,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "8102:5:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 37757,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "src": "8102:15:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                          "typeString": "int_const 1000000000000000000"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 37749,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "7879:3:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 37750,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encode",
                                      "nodeType": "MemberAccess",
                                      "src": "7879:10:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 37758,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7879:264:49",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 37748,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "7844:9:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 37759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7844:321:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string hex\"1901\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 37742,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "7729:3:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 37743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "src": "7729:16:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 37760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7729:454:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 37741,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "7702:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 37761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7702:495:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37738,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "7664:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37739,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sign",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6280,
                      "src": "7664:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$returns$_t_uint8_$_t_bytes32_$_t_bytes32_$",
                        "typeString": "function (uint256,bytes32) external returns (uint8,bytes32,bytes32)"
                      }
                    },
                    "id": 37762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7664:543:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(uint8,bytes32,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7630:577:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37767,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37719,
                        "src": "8230:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 37768,
                        "name": "toPermit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37726,
                        "src": "8237:8:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "hexValue": "31653138",
                        "id": 37769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8247:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1e18"
                      },
                      {
                        "expression": {
                          "id": 37770,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "8253:5:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 37771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "src": "8253:15:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 37772,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37733,
                        "src": "8270:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 37773,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37735,
                        "src": "8273:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 37774,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37737,
                        "src": "8276:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37764,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "8217:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37766,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "permit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31552,
                      "src": "8217:12:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                      }
                    },
                    "id": 37775,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8217:61:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37776,
                  "nodeType": "ExpressionStatement",
                  "src": "8217:61:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "45524332305065726d69743a20696e76616c6964207369676e6174757265",
                        "id": 37780,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8304:32:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124",
                          "typeString": "literal_string \"ERC20Permit: invalid signature\""
                        },
                        "value": "ERC20Permit: invalid signature"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124",
                          "typeString": "literal_string \"ERC20Permit: invalid signature\""
                        }
                      ],
                      "expression": {
                        "id": 37777,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "8288:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37779,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "8288:15:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 37781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8288:49:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37782,
                  "nodeType": "ExpressionStatement",
                  "src": "8288:49:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37786,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37719,
                        "src": "8360:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 37787,
                        "name": "toPermit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37726,
                        "src": "8367:8:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "hexValue": "31653138",
                        "id": 37788,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8377:4:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1e18"
                      },
                      {
                        "expression": {
                          "id": 37789,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "8383:5:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 37790,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "src": "8383:15:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 37791,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37733,
                        "src": "8400:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 37792,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37735,
                        "src": "8403:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 37793,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37737,
                        "src": "8406:1:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37783,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "8347:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37785,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "permit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31552,
                      "src": "8347:12:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                      }
                    },
                    "id": 37794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8347:61:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37795,
                  "nodeType": "ExpressionStatement",
                  "src": "8347:61:49"
                }
              ]
            },
            "functionSelector": "ad65e194",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_permitRevertsOnReplay",
            "parameters": {
              "id": 37712,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7500:2:49"
            },
            "returnParameters": {
              "id": 37713,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7510:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37821,
            "nodeType": "FunctionDefinition",
            "src": "8421:178:49",
            "body": {
              "id": 37820,
              "nodeType": "Block",
              "src": "8462:137:49",
              "statements": [
                {
                  "assignments": [
                    37801
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37801,
                      "mutability": "mutable",
                      "name": "newOwner",
                      "nodeType": "VariableDeclaration",
                      "scope": 37820,
                      "src": "8472:16:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 37800,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8472:7:49",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37806,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "307842454546",
                        "id": 37804,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8499:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        },
                        "value": "0xBEEF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        }
                      ],
                      "id": 37803,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8491:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 37802,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8491:7:49",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 37805,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8491:15:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8472:34:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37810,
                        "name": "newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37801,
                        "src": "8540:8:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 37807,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "8516:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37809,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31652,
                      "src": "8516:23:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 37811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8516:33:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37812,
                  "nodeType": "ExpressionStatement",
                  "src": "8516:33:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 37814,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36910,
                            "src": "8568:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockWeth_$42735",
                              "typeString": "contract MockWeth"
                            }
                          },
                          "id": 37815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 23099,
                          "src": "8568:11:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 37816,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8568:13:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 37817,
                        "name": "newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37801,
                        "src": "8583:8:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 37813,
                      "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": 320,
                      "src": "8559:8:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 37818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8559:33:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37819,
                  "nodeType": "ExpressionStatement",
                  "src": "8559:33:49"
                }
              ]
            },
            "functionSelector": "1f2ba143",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_transferOwnership",
            "parameters": {
              "id": 37798,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8452:2:49"
            },
            "returnParameters": {
              "id": 37799,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8462:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37855,
            "nodeType": "FunctionDefinition",
            "src": "8605:262:49",
            "body": {
              "id": 37854,
              "nodeType": "Block",
              "src": "8655:212:49",
              "statements": [
                {
                  "assignments": [
                    37825
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37825,
                      "mutability": "mutable",
                      "name": "newOwner",
                      "nodeType": "VariableDeclaration",
                      "scope": 37854,
                      "src": "8665:16:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 37824,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8665:7:49",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37830,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "307842454546",
                        "id": 37828,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8692:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        },
                        "value": "0xBEEF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_48879_by_1",
                          "typeString": "int_const 48879"
                        }
                      ],
                      "id": 37827,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8684:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 37826,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8684:7:49",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 37829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8684:15:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8665:34:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37834,
                        "name": "newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37825,
                        "src": "8723:8:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 37831,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "8709:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37833,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startPrank",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6445,
                      "src": "8709:13:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 37835,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8709:23:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37836,
                  "nodeType": "ExpressionStatement",
                  "src": "8709:23:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "id": 37840,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8758:34:49",
                        "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": 37837,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "8742:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37839,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6481,
                      "src": "8742:15:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 37841,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8742:51:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37842,
                  "nodeType": "ExpressionStatement",
                  "src": "8742:51:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 37846,
                        "name": "newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37825,
                        "src": "8827:8:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 37843,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "8803:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37845,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31652,
                      "src": "8803:23:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 37847,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8803:33:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37848,
                  "nodeType": "ExpressionStatement",
                  "src": "8803:33:49"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 37849,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "8846:2:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37851,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stopPrank",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6462,
                      "src": "8846:12:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 37852,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8846:14:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37853,
                  "nodeType": "ExpressionStatement",
                  "src": "8846:14:49"
                }
              ]
            },
            "functionSelector": "5d4640ed",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_transferOwnershipOnlyOwner",
            "parameters": {
              "id": 37822,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8645:2:49"
            },
            "returnParameters": {
              "id": 37823,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8655:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37877,
            "nodeType": "FunctionDefinition",
            "src": "8873:166:49",
            "body": {
              "id": 37876,
              "nodeType": "Block",
              "src": "8918:121:49",
              "statements": [
                {
                  "assignments": [
                    37859
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37859,
                      "mutability": "mutable",
                      "name": "userA",
                      "nodeType": "VariableDeclaration",
                      "scope": 37876,
                      "src": "8928:13:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 37858,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8928:7:49",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37863,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 37860,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "8944:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37861,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 23099,
                      "src": "8944:11:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 37862,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8944:13:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8928:29:49"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 37864,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36910,
                        "src": "8967:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockWeth_$42735",
                          "typeString": "contract MockWeth"
                        }
                      },
                      "id": 37866,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "renounceOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31660,
                      "src": "8967:23:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 37867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8967:25:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37868,
                  "nodeType": "ExpressionStatement",
                  "src": "8967:25:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 37870,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36910,
                            "src": "9011:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockWeth_$42735",
                              "typeString": "contract MockWeth"
                            }
                          },
                          "id": 37871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 23099,
                          "src": "9011:11:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 37872,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9011:13:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 37873,
                        "name": "userA",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37859,
                        "src": "9026:5:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 37869,
                      "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": 320,
                      "src": "9002:8:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 37874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9002:30:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37875,
                  "nodeType": "ExpressionStatement",
                  "src": "9002:30:49"
                }
              ]
            },
            "functionSelector": "6c25a6a3",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "test_renounceOwnershipNoOp",
            "parameters": {
              "id": 37856,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8908:2:49"
            },
            "returnParameters": {
              "id": 37857,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8918:0:49"
            },
            "scope": 37878,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 36907,
              "name": "Test",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4902,
              "src": "175:4:49",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Test_$4902",
                "typeString": "contract Test"
              }
            },
            "id": 36908,
            "nodeType": "InheritanceSpecifier",
            "src": "175:4:49"
          }
        ],
        "contractDependencies": [
          1786,
          2021,
          4902,
          42735
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          37878,
          4902,
          2021,
          1786
        ],
        "name": "BridgeTokenTest",
        "scope": 37879
      }
    ],
    "license": "MIT OR Apache-2.0"
  },
  "id": 49
}